diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000000..a7371e02a6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,43 @@ +--- +name: Bug report +about: Create a report to help us fix issues. +title: '' +labels: 'Type: Bug' +assignees: '' + +--- + + + +**Application version** + + +**Platform** + + +**Printer** + + +**Reproduction steps** + + +**Actual results** + + +**Expected results** + + +**Additional information** + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000..2a0a3e4e7b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +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.** + + +**Describe the solution you'd like** + + +**Describe alternatives you've considered** + + +**Affected users and/or printers** + +**Additional context** + 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..b516de6b63 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,13 +20,34 @@ 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") endif() @@ -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) + 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/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/cura.desktop.in b/cura.desktop.in index b0195015a5..2502327203 100644 --- a/cura.desktop.in +++ b/cura.desktop.in @@ -13,6 +13,6 @@ 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; diff --git a/cura/API/Account.py b/cura/API/Account.py index 30401454b3..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: @@ -105,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..eeb283a72b 100644 --- a/cura/ApplicationMetadata.py +++ b/cura/ApplicationMetadata.py @@ -9,7 +9,7 @@ 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" +DEFAULT_CURA_SDK_VERSION = "6.2.0" try: from cura.CuraVersion import CuraAppName # type: ignore @@ -42,9 +42,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 +# 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 = "6.2.0" 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 f8f691a850..17b28c12c8 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.Scene.Camera import Camera +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,20 @@ 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 +43,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 +91,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 +109,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) @@ -124,8 +133,8 @@ class BuildVolume(SceneNode): # 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: @@ -165,16 +174,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: @@ -222,13 +228,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,14 +252,21 @@ 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: @@ -274,8 +292,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,7 +313,7 @@ class BuildVolume(SceneNode): node.setOutsideBuildArea(True) return - if node.collidesWithArea(self.getDisallowedAreas()): + if node.collidesWithAreas(self.getDisallowedAreas()): node.setOutsideBuildArea(True) return @@ -307,32 +325,43 @@ class BuildVolume(SceneNode): 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 +380,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 +392,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 +512,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,21 +530,24 @@ 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: # This might be called before the extruder stacks have initialised, in which case getting the adhesion_type fails @@ -509,7 +558,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 +567,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 +614,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 +623,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 +652,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 +681,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 +689,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 +700,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. # @@ -671,57 +719,26 @@ class BuildVolume(SceneNode): 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]) @@ -729,33 +746,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 @@ -776,11 +788,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") @@ -790,27 +805,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. @@ -828,9 +835,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: @@ -838,13 +846,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) @@ -867,9 +875,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)) @@ -880,7 +891,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") @@ -889,13 +900,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 @@ -903,7 +914,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: @@ -987,8 +999,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))) @@ -1000,14 +1012,86 @@ 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 + def _calculateBedAdhesionSize(self, used_extruders): + if self._global_container_stack is None: + return + + container_stack = self._global_container_stack + 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") + # 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 + + 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 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?") + + max_length_available = 0.5 * min( + self._global_container_stack.getProperty("machine_width", "value"), + 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 + + def _calculateMoveFromWallRadius(self, used_extruders): + move_from_wall_radius = 0 # Moves that start from outer wall. + 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). + 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 @@ -1024,67 +1108,10 @@ class BuildVolume(SceneNode): 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")): - 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 - - 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 brim 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?") - - max_length_available = 0.5 * min( - self._global_container_stack.getProperty("machine_width", "value"), - self._global_container_stack.getProperty("machine_depth", "value") - ) - bed_adhesion_size = min(bed_adhesion_size, max_length_available) - - 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 - - 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")) - - 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] - 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). - if avoid_other_parts_enabled: - move_from_wall_radius = max(move_from_wall_radius, avoid_distance) + 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. @@ -1100,8 +1127,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..1d85a1da54 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,7 +23,6 @@ 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 catalog = i18nCatalog("cura") @@ -319,7 +319,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 +352,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..3a1b35d987 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: @@ -74,6 +75,39 @@ class CuraActions(QObject): operation.addOperation(center_operation) operation.push() + # Rotate the selection, so that the face that the mouse-pointer is on, faces the build-plate. + @pyqtSlot() + def bottomFaceSelection(self) -> None: + selected_face = Selection.getSelectedFace() + if not selected_face: + Logger.log("e", "Bottom face operation shouldn't have been called without a selected face.") + return + + original_node, face_id = selected_face + meshdata = original_node.getMeshDataTransformed() + if not meshdata or face_id < 0 or face_id > Selection.getMaxFaceSelectionId(): + return + + rotation_point, face_normal = meshdata.getFacePlane(face_id) + rotation_point_vector = Vector(rotation_point[0], rotation_point[1], rotation_point[2]) + face_normal_vector = Vector(face_normal[0], face_normal[1], face_normal[2]) + rotation_quaternion = Quaternion.rotationTo(face_normal_vector.normalized(), Vector(0.0, -1.0, 0.0)) + + operation = GroupedOperation() + current_node = None # type: Optional[SceneNode] + for node in Selection.getAllSelectedObjects(): + current_node = node + parent_node = current_node.getParent() + while parent_node and parent_node.callDecoration("isGroup"): + current_node = parent_node + parent_node = current_node.getParent() + if current_node is None: + return + + rotate_operation = RotateOperation(current_node, rotation_quaternion, rotation_point_vector) + operation.addOperation(rotate_operation) + operation.push() + ## Multiply all objects in the selection # # \param count The number of times to multiply the selection. diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4d3d2434ff..ef85bf7457 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -13,113 +13,124 @@ 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 +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.Bindings import MainWindow +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.ContainerStack import ContainerStack +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 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.Scene.CuraSceneNode import CuraSceneNode +from cura.Scene.GCodeListDecorator import GCodeListDecorator +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene import ZOffsetDecorator from cura.Machines.MachineErrorChecker import MachineErrorChecker +from cura.Machines.VariantManager import VariantManager +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.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.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.MachineManager import MachineManager +from cura.Settings.MachineNameValidator import MachineNameValidator +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 - if TYPE_CHECKING: from cura.Machines.MaterialManager import MaterialManager from cura.Machines.QualityManager import QualityManager @@ -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 = 9 Created = False @@ -208,6 +219,15 @@ class CuraApplication(QtApplication): self._cura_scene_controller = None self._machine_error_checker = None + self._machine_settings_manager = MachineSettingsManager(self, parent = self) + + self._discovered_printer_model = DiscoveredPrintersModel(self, parent = self) + self._first_start_machine_actions_model = FirstStartMachineActionsModel(self, parent = self) + 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 +257,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 @@ -405,7 +422,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) @@ -450,7 +467,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. @@ -509,8 +525,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 +543,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 +566,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() @@ -649,13 +677,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() @@ -745,6 +770,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 +840,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 +868,38 @@ 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": + 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) @@ -874,7 +931,7 @@ class CuraApplication(QtApplication): 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) @@ -933,7 +990,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) @@ -975,9 +1032,17 @@ class CuraApplication(QtApplication): 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") @@ -988,7 +1053,8 @@ class CuraApplication(QtApplication): qmlRegisterType(GenericMaterialsModel, "Cura", 1, 0, "GenericMaterialsModel") qmlRegisterType(MaterialBrandsModel, "Cura", 1, 0, "MaterialBrandsModel") qmlRegisterType(QualityManagementModel, "Cura", 1, 0, "QualityManagementModel") - qmlRegisterType(MachineManagementModel, "Cura", 1, 0, "MachineManagementModel") + + qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel") qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0, "QualityProfilesDropDownMenuModel", self.getQualityProfilesDropDownMenuModel) @@ -999,6 +1065,7 @@ class CuraApplication(QtApplication): 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 +1122,6 @@ class CuraApplication(QtApplication): self._camera_animation.setTarget(Selection.getSelectedObject(0).getWorldPosition()) self._camera_animation.start() - requestAddPrinter = pyqtSignal() activityChanged = pyqtSignal() sceneBoundingBoxChanged = pyqtSignal() @@ -1197,7 +1263,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 +1290,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 +1328,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,13 +1342,18 @@ 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) + mesh_data = node.getMeshData() + if mesh_data and mesh_data.getFileName(): + job = ReadMeshJob(mesh_data.getFileName()) job._node = node # type: ignore job.finished.connect(self._reloadMeshFinished) if has_merged_nodes: @@ -1715,3 +1792,69 @@ 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() 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..a62083945b 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.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. from UM.Application import Application @@ -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]) @@ -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/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index fb11123af6..964331909c 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -127,7 +127,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.extruders.values(): for key in stack.getAllKeys(): self._stacks_and_keys_to_check.append((stack, key)) @@ -168,7 +168,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/MaterialManager.py b/cura/Machines/MaterialManager.py index 634f1ba2bd..90012325c8 100644 --- a/cura/Machines/MaterialManager.py +++ b/cura/Machines/MaterialManager.py @@ -93,7 +93,7 @@ class MaterialManager(QObject): 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] + self._material_group_map = dict() # Map #1 # root_material_id -> MaterialGroup @@ -103,6 +103,8 @@ class MaterialManager(QObject): continue root_material_id = material_metadata.get("base_file", "") + if root_material_id not in material_metadatas: #Not a registered material profile. Don't store this in the look-up tables. + continue 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) @@ -118,7 +120,7 @@ class MaterialManager(QObject): # Map #1.5 # GUID -> material group list - self._guid_material_groups_map = defaultdict(list) # type: Dict[str, List[MaterialGroup]] + self._guid_material_groups_map = defaultdict(list) 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) @@ -200,7 +202,7 @@ class MaterialManager(QObject): # 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]] + self._diameter_machine_nozzle_buildplate_material_map = dict() for material_metadata in material_metadatas.values(): self.__addMaterialMetadataIntoLookupTree(material_metadata) diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py new file mode 100644 index 0000000000..a1b68ee1ae --- /dev/null +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -0,0 +1,264 @@ +# 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 PyQt5.QtCore import QObject + 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 97% rename from cura/Settings/ExtrudersModel.py rename to cura/Machines/Models/ExtrudersModel.py index 93cc1ce402..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 diff --git a/cura/Machines/Models/FirstStartMachineActionsModel.py b/cura/Machines/Models/FirstStartMachineActionsModel.py new file mode 100644 index 0000000000..ce0e9bf856 --- /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..e81a73de24 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -1,7 +1,6 @@ # Copyright (c) 2018 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): diff --git a/cura/GlobalStacksModel.py b/cura/Machines/Models/GlobalStacksModel.py similarity index 68% rename from cura/GlobalStacksModel.py rename to cura/Machines/Models/GlobalStacksModel.py index 3c3321e5ca..9db4ffe6db 100644 --- a/cura/GlobalStacksModel.py +++ b/cura/Machines/Models/GlobalStacksModel.py @@ -1,14 +1,14 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from PyQt5.QtCore import Qt, QTimer from UM.Qt.ListModel import ListModel +from UM.i18n import i18nCatalog +from UM.Util import parseBool -from PyQt5.QtCore import pyqtProperty, Qt, QTimer - -from cura.PrinterOutputDevice import ConnectionType +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType from cura.Settings.CuraContainerRegistry import CuraContainerRegistry - from cura.Settings.GlobalStack import GlobalStack @@ -18,14 +18,18 @@ 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) @@ -36,35 +40,38 @@ class GlobalStacksModel(ListModel): CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged) CuraContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged) CuraContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged) - self._filter_dict = {} self._updateDelayed() ## Handler for container added/removed events from registry - def _onContainerChanged(self, container): + def _onContainerChanged(self, container) -> None: # We only need to update when the added / removed container GlobalStack if isinstance(container, GlobalStack): self._updateDelayed() - def _updateDelayed(self): + 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/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/MaterialBrandsModel.py b/cura/Machines/Models/MaterialBrandsModel.py index ac82cf6670..c4721db5f7 100644 --- a/cura/Machines/Models/MaterialBrandsModel.py +++ b/cura/Machines/Models/MaterialBrandsModel.py @@ -1,9 +1,8 @@ # Copyright (c) 2018 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): diff --git a/cura/Settings/UserChangesModel.py b/cura/Machines/Models/UserChangesModel.py similarity index 99% rename from cura/Settings/UserChangesModel.py rename to cura/Machines/Models/UserChangesModel.py index 9a26e5607e..e629295397 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 diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py index b849b16169..7da4f4f0d6 100644 --- a/cura/Machines/QualityManager.py +++ b/cura/Machines/QualityManager.py @@ -202,9 +202,6 @@ class QualityManager(QObject): 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 @@ -442,7 +439,8 @@ class QualityManager(QObject): 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, + new_name = self._container_registry.uniqueName(quality_changes_name) + new_quality_changes = self._createQualityChanges(quality_group.quality_type, new_name, global_stack, None) self._container_registry.addContainer(new_quality_changes) else: diff --git a/cura/Machines/VariantManager.py b/cura/Machines/VariantManager.py index eaaa9fc5f0..55c008ff40 100644 --- a/cura/Machines/VariantManager.py +++ b/cura/Machines/VariantManager.py @@ -85,7 +85,14 @@ class VariantManager: 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] + try: + variant_container = self._container_registry.findContainers(type = "variant", id = variant_metadata["id"])[0] + except IndexError as e: + # It still needs to break, but we want to know what variant ID made it break. + msg = "Unable to find build plate variant with the id [%s]" % variant_metadata["id"] + Logger.logException("e", msg) + raise IndexError(msg) + 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() 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 f4a29962a4..08309fa30e 100644 --- a/cura/OAuth2/AuthorizationHelpers.py +++ b/cura/OAuth2/AuthorizationHelpers.py @@ -50,6 +50,7 @@ class AuthorizationHelpers: # \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 "", 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 1f20f2d87f..95ea47112e 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -2,15 +2,19 @@ # Cura is released under the terms of the LGPLv3 or higher. import json -import webbrowser from datetime import datetime, timedelta +import os 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.Platform import Platform from UM.Signal import Signal from cura.OAuth2.LocalAuthorizationServer import LocalAuthorizationServer @@ -34,6 +38,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) @@ -68,6 +74,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: @@ -83,6 +90,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: @@ -90,12 +98,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. @@ -124,6 +136,7 @@ class AuthorizationService: 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) @@ -154,7 +167,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) @@ -194,6 +207,7 @@ class AuthorizationService: ## 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 @@ -206,6 +220,8 @@ class AuthorizationService: self._user_profile = None self._preferences.resetPreference(self._settings.AUTH_DATA_PREFERENCE_KEY) + self.accessTokenChanged.emit() + def _onMessageActionTriggered(self, _, action): if action == "retry": self.loadAuthDataFromPreferences() 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 f9f923b31d..0000000000 --- a/cura/ObjectsModel.py +++ /dev/null @@ -1,100 +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.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 -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._updateSceneDelayed) - Application.getInstance().getPreferences().preferenceChanged.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 - - def setActiveBuildPlate(self, nr): - if self._build_plate_number != nr: - self._build_plate_number = nr - self._update() - - def _updateSceneDelayed(self, source): - if not isinstance(source, Camera): - self._update_timer.start() - - 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/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 8fffac4501..d084c0dbf4 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -49,18 +49,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 +78,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 +162,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..8465af4b83 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 @@ -83,30 +85,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..3f20e0f3c4 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() 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 74% rename from cura/PrinterOutput/ExtruderConfigurationModel.py rename to cura/PrinterOutput/Models/ExtruderConfigurationModel.py index da0ad6b0b2..04a3c95afd 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,7 +25,7 @@ class ExtruderConfigurationModel(QObject): return self._position def setMaterial(self, material: Optional[MaterialOutputModel]) -> None: - if self._hotend_id != material: + if self._material != material: self._material = material self.extruderConfigurationChanged.emit() @@ -33,7 +33,7 @@ class ExtruderConfigurationModel(QObject): 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 +62,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..7a17ef3cce --- /dev/null +++ b/cura/PrinterOutput/Models/MaterialOutputModel.py @@ -0,0 +1,36 @@ +# 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 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..a1a23201fb --- /dev/null +++ b/cura/PrinterOutput/Models/PrinterOutputModel.py @@ -0,0 +1,340 @@ +# 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._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() + + ## 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 0e33a71249..392df7bded 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 @@ -315,16 +309,30 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): self._manager = QNetworkAccessManager() self._manager.finished.connect(self._handleOnFinished) - self._last_manager_create_time = time() 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 + ## 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. 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..31daacbccc --- /dev/null +++ b/cura/PrinterOutput/PrinterOutputDevice.py @@ -0,0 +1,266 @@ +# 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.Decorators import deprecated +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 + + @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["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) + new_configurations = sorted(all_configurations, key = lambda config: config.printerType) + 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 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/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index da71f6920e..2d8224eecc 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() @@ -78,7 +80,8 @@ class ConvexHullDecorator(SceneNodeDecorator): def getConvexHull(self) -> Optional[Polygon]: if self._node is None: return None - + if self._node.callDecoration("isNonPrintingMesh"): + return None hull = self._compute2DConvexHull() if self._global_stack and self._node is not None and hull is not None: @@ -108,7 +111,8 @@ class ConvexHullDecorator(SceneNodeDecorator): def getConvexHullHead(self) -> Optional[Polygon]: if self._node is None: return None - + if self._node.callDecoration("isNonPrintingMesh"): + 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() @@ -124,6 +128,9 @@ class ConvexHullDecorator(SceneNodeDecorator): def getConvexHullBoundary(self) -> Optional[Polygon]: if self._node is None: return None + + if self._node.callDecoration("isNonPrintingMesh"): + return None if self._global_stack: if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node): @@ -400,4 +407,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/CuraSceneController.py b/cura/Scene/CuraSceneController.py index 9f26ea7cc3..91ff26cadc 100644 --- a/cura/Scene/CuraSceneController.py +++ b/cura/Scene/CuraSceneController.py @@ -4,7 +4,7 @@ from PyQt5.QtCore import Qt, pyqtSlot, QObject from PyQt5.QtWidgets import QApplication from UM.Scene.Camera import Camera -from cura.ObjectsModel import ObjectsModel +from cura.UI.ObjectsModel import ObjectsModel from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel from UM.Application import Application diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index 259c273329..4215c8fa84 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: + def collidesWithAreas(self, areas: List[Polygon]) -> bool: convex_hull = self.callDecoration("getConvexHull") 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 2422fa3b21..9f20c8ccfa 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -4,7 +4,7 @@ import os import urllib.parse import uuid -from typing import Dict, Union, Any, TYPE_CHECKING, List +from typing import Dict, Union, Any, TYPE_CHECKING, List, cast from PyQt5.QtCore import QObject, QUrl from PyQt5.QtWidgets import QMessageBox @@ -438,7 +438,7 @@ class ContainerManager(QObject): if not path: return - container_list = [n.getContainer() for n in quality_changes_group.getAllNodes() if n.getContainer() is not None] + container_list = [cast(InstanceContainer, n.getContainer()) for n in quality_changes_group.getAllNodes() if n.getContainer() is not None] self._container_registry.exportQualityProfile(container_list, path, file_type) __instance = None # type: ContainerManager diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index dd7ed625d6..c1a9ba9ead 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -5,7 +5,7 @@ import os import re import configparser -from typing import Any, cast, Dict, Optional +from typing import Any, cast, Dict, Optional, List, Union from PyQt5.QtWidgets import QMessageBox from UM.Decorators import override @@ -20,13 +20,14 @@ 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 cura.ReaderWriters.ProfileWriter import ProfileWriter from . import ExtruderStack from . import GlobalStack import cura.CuraApplication +from cura.Settings.cura_empty_instance_containers import empty_quality_container from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch from cura.ReaderWriters.ProfileReader import NoProfileException, ProfileReader @@ -50,10 +51,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 +62,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 +72,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 +93,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 +101,17 @@ 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 # \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 +123,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 +136,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 +161,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,9 +174,6 @@ 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)} @@ -180,6 +182,9 @@ class CuraContainerRegistry(ContainerRegistry): 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 @@ -236,12 +241,11 @@ class CuraContainerRegistry(ContainerRegistry): # 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") @@ -281,7 +285,7 @@ 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: @@ -309,9 +313,9 @@ class CuraContainerRegistry(ContainerRegistry): 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 !", + "@info:status Don't translate the XML tag !", "Failed to import profile from {0}:", - file_name) + " " + result + ""} + file_name) + " " + result} return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile_or_list[0].getName())} @@ -322,7 +326,7 @@ 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() @@ -383,13 +387,33 @@ class CuraContainerRegistry(ContainerRegistry): # 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: + # "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): @@ -404,7 +428,7 @@ class CuraContainerRegistry(ContainerRegistry): return result ## 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") @@ -428,14 +452,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. @@ -669,7 +693,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 @@ -682,7 +706,7 @@ class CuraContainerRegistry(ContainerRegistry): parser = configparser.ConfigParser(interpolation = None) try: parser.read([file_path]) - except: + except Exception: # Skip, it is not a valid stack file continue @@ -714,7 +738,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(): diff --git a/cura/Settings/CuraFormulaFunctions.py b/cura/Settings/CuraFormulaFunctions.py index 9ef80bd3d4..a8b416eeb5 100644 --- a/cura/Settings/CuraFormulaFunctions.py +++ b/cura/Settings/CuraFormulaFunctions.py @@ -42,7 +42,14 @@ class CuraFormulaFunctions: 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)) + 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) diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index d20e686279..cef6150043 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -129,8 +129,9 @@ class CuraStackBuilder: extruder_definition = registry.findDefinitionContainers(id = extruder_definition_id)[0] except IndexError as e: # It still needs to break, but we want to know what extruder ID made it break. - Logger.log("e", "Unable to find extruder with the id %s", extruder_definition_id) - raise e + 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 diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index b6b7b31936..2fa90f9636 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -12,7 +12,7 @@ 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 UM.Decorators import deprecated from typing import Any, cast, Dict, List, Optional, TYPE_CHECKING, Union @@ -95,6 +95,7 @@ class ExtruderManager(QObject): # # \param index The index of the extruder whose name to get. @pyqtSlot(int, result = str) + @deprecated("Use Cura.MachineManager.activeMachine.extruders[index].name instead", "4.3") def getExtruderName(self, index: int) -> str: try: return self.getActiveExtruderStacks()[index].getName() @@ -114,7 +115,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 +132,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 +141,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 +181,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 +206,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 +225,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 +280,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] @@ -370,7 +381,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 as e: + # 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/GlobalStack.py b/cura/Settings/GlobalStack.py index 3940af7ecc..bead31b4e4 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 @@ -34,6 +36,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 +61,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 +98,15 @@ 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 ## \sa configuredConnectionTypes def addConfiguredConnectionType(self, connection_type: int) -> None: @@ -94,7 +119,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])) @@ -200,7 +225,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 +265,17 @@ class GlobalStack(CuraContainerStack): def getHeadAndFansCoordinates(self): return self.getProperty("machine_head_with_fans_polygon", "value") - def getHasMaterials(self) -> bool: + @pyqtProperty(int, constant=True) + def hasMaterials(self): return parseBool(self.getMetaDataEntry("has_materials", False)) - def getHasVariants(self) -> bool: + @pyqtProperty(int, constant=True) + def hasVariants(self): return parseBool(self.getMetaDataEntry("has_variants", False)) - def getHasMachineQuality(self) -> bool: - return parseBool(self.getMetaDataEntry("has_machine_quality", False)) + @pyqtProperty(int, 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) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index fbd52267f5..7ae635baaa 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -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 @@ -22,10 +23,10 @@ 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 +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 @@ -37,11 +38,10 @@ 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 @@ -106,7 +106,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 @@ -157,6 +157,7 @@ class MachineManager(QObject): printerConnectedStatusChanged = pyqtSignal() # Emitted every time the active machine change or the outputdevices change rootMaterialChanged = pyqtSignal() + discoveredPrintersChanged = pyqtSignal() def setInitialActiveMachine(self) -> None: active_machine_id = self._application.getPreferences().getValue("cura/active_machine") @@ -171,10 +172,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: @@ -205,7 +205,7 @@ class MachineManager(QObject): 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) @@ -362,7 +362,6 @@ class MachineManager(QObject): # 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 self._application.setGlobalContainerStack(global_stack) @@ -370,6 +369,11 @@ class MachineManager(QObject): self._initMachineState(global_stack) self._onGlobalContainerChanged() + # Switch to the first enabled extruder + self.updateDefaultExtruder() + default_extruder_position = int(self.defaultExtruderPosition) + ExtruderManager.getInstance().setActiveExtruderIndex(default_extruder_position) + self.__emitChangedSignals() ## Given a definition id, return the machine with this id. @@ -383,12 +387,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()) @@ -451,6 +464,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 @@ -486,18 +500,21 @@ class MachineManager(QObject): return bool(self._stacks_have_errors) @pyqtProperty(str, notify = globalContainerChanged) + @deprecated("use Cura.MachineManager.activeMachine.definition.name instead", "4.1") def activeMachineDefinitionName(self) -> str: if self._global_container_stack: return self._global_container_stack.definition.getName() return "" @pyqtProperty(str, notify = globalContainerChanged) + @deprecated("use Cura.MachineManager.activeMachine.name instead", "4.1") 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) + @deprecated("use Cura.MachineManager.activeMachine.id instead", "4.1") def activeMachineId(self) -> str: if self._global_container_stack: return self._global_container_stack.getId() @@ -520,6 +537,7 @@ class MachineManager(QObject): return bool(self._printer_output_devices) @pyqtProperty(bool, notify = printerConnectedStatusChanged) + @deprecated("use Cura.MachineManager.activeMachine.configuredConnectionTypes instead", "4.2") def activeMachineHasRemoteConnection(self) -> bool: if self._global_container_stack: has_remote_connection = False @@ -531,6 +549,7 @@ class MachineManager(QObject): return False @pyqtProperty("QVariantList", notify=globalContainerChanged) + @deprecated("use Cura.MachineManager.activeMachine.configuredConnectionTypes instead", "4.1") def activeMachineConfiguredConnectionTypes(self): if self._global_container_stack: return self._global_container_stack.configuredConnectionTypes @@ -579,7 +598,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 @@ -675,11 +694,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: @@ -708,6 +722,7 @@ class MachineManager(QObject): extruder_stack.userChanges.setProperty(key, "value", new_value) @pyqtProperty(str, notify = activeVariantChanged) + @deprecated("use Cura.MachineManager.activeStack.variant.name instead", "4.1") def activeVariantName(self) -> str: if self._active_container_stack: variant = self._active_container_stack.variant @@ -717,6 +732,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify = activeVariantChanged) + @deprecated("use Cura.MachineManager.activeStack.variant.id instead", "4.1") def activeVariantId(self) -> str: if self._active_container_stack: variant = self._active_container_stack.variant @@ -726,6 +742,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify = activeVariantChanged) + @deprecated("use Cura.MachineManager.activeMachine.variant.name instead", "4.1") def activeVariantBuildplateName(self) -> str: if self._global_container_stack: variant = self._global_container_stack.variant @@ -735,6 +752,7 @@ class MachineManager(QObject): return "" @pyqtProperty(str, notify = globalContainerChanged) + @deprecated("use Cura.MachineManager.activeMachine.definition.id instead", "4.1") def activeDefinitionId(self) -> str: if self._global_container_stack: return self._global_container_stack.definition.id @@ -770,6 +788,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) @@ -781,7 +800,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: @@ -789,29 +807,33 @@ 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) + @deprecated("use Cura.MachineManager.activeMachine.hasMaterials instead", "4.2") def hasMaterials(self) -> bool: if self._global_container_stack: - return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_materials", False)) + return self._global_container_stack.hasMaterials return False @pyqtProperty(bool, notify = globalContainerChanged) + @deprecated("use Cura.MachineManager.activeMachine.hasVariants instead", "4.2") def hasVariants(self) -> bool: if self._global_container_stack: - return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_variants", False)) + return self._global_container_stack.hasVariants return False @pyqtProperty(bool, notify = globalContainerChanged) + @deprecated("use Cura.MachineManager.activeMachine.hasVariantBuildplates instead", "4.2") def hasVariantBuildplates(self) -> bool: if self._global_container_stack: - return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_variant_buildplates", False)) + return self._global_container_stack.hasVariantBuildplates return False ## The selected buildplate is compatible if it is compatible with all the materials in all the extruders @@ -874,17 +896,12 @@ 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: @@ -903,9 +920,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() @@ -933,7 +949,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") @@ -971,6 +987,11 @@ class MachineManager(QObject): @pyqtSlot(int, result = QObject) def getExtruder(self, position: int) -> Optional[ExtruderStack]: + return self._getExtruder(position) + + # This is a workaround for the deprecated decorator and the pyqtSlot not playing well together. + @deprecated("use Cura.MachineManager.activeMachine.extruders instead", "4.2") + def _getExtruder(self, position) -> Optional[ExtruderStack]: if self._global_container_stack: return self._global_container_stack.extruders.get(str(position)) return None @@ -1057,9 +1078,6 @@ class MachineManager(QObject): def _onMaterialNameChanged(self) -> None: self.activeMaterialChanged.emit() - def _onQualityNameChanged(self) -> None: - self.activeQualityChanged.emit() - def _getContainerChangedSignals(self) -> List[Signal]: if self._global_container_stack is None: return [] @@ -1086,6 +1104,7 @@ class MachineManager(QObject): container.removeInstance(setting_name) @pyqtProperty("QVariantList", notify = globalContainerChanged) + @deprecated("use Cura.MachineManager.activeMachine.extruders instead", "4.2") def currentExtruderPositions(self) -> List[str]: if self._global_container_stack is None: return [] @@ -1095,9 +1114,17 @@ class MachineManager(QObject): 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") + material_id = self._global_container_stack.extruders[position].material.getMetaDataEntry("base_file") + 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]: @@ -1250,8 +1277,8 @@ class MachineManager(QObject): 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 + if not extruder.isEnabled: + continue if not extruder.material.getMetaDataEntry("compatible"): return False return True @@ -1260,7 +1287,7 @@ class MachineManager(QObject): def _updateQualityWithMaterial(self, *args: Any) -> None: if self._global_container_stack is None: return - Logger.log("i", "Updating quality/quality_changes due to material change") + Logger.log("d", "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 @@ -1341,33 +1368,37 @@ class MachineManager(QObject): # instance with the same network key. @pyqtSlot(str) def switchPrinterType(self, machine_name: str) -> None: + Logger.log("i", "Attempting to switch the printer type to [%s]", machine_name) # 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: return # 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"), + "um_network_key": self.activeMachineNetworkKey(), + } + 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("group_id", self._global_container_stack.getMetaDataEntry("group_id")) 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")) 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() @@ -1424,6 +1455,7 @@ class MachineManager(QObject): self._global_container_stack.extruders[position].setEnabled(True) self.updateMaterialWithVariant(position) + self.updateDefaultExtruder() self.updateNumberExtrudersEnabled() if configuration.buildplateConfiguration is not None: @@ -1455,31 +1487,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() @@ -1650,3 +1657,7 @@ class MachineManager(QObject): abbr_machine += stripped_word return abbr_machine + + # Gets all machines that belong to the given group_id. + def getMachinesInGroup(self, group_id: str) -> List["GlobalStack"]: + return self._container_registry.findContainerStacks(type = "machine", group_id = group_id) 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/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/cura_empty_instance_containers.py b/cura/Settings/cura_empty_instance_containers.py index d76407ed79..0eedfc8654 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 @@ -28,7 +30,7 @@ empty_material_container.setMetaDataEntry("type", "material") 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) @@ -41,6 +43,22 @@ empty_quality_changes_container.setMetaDataEntry("type", "quality_changes") empty_quality_changes_container.setMetaDataEntry("quality_type", "not_supported") +# 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, +} + + +# 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", "empty_container", # For convenience "EMPTY_DEFINITION_CHANGES_CONTAINER_ID", @@ -52,5 +70,7 @@ __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", ] diff --git a/cura/Snapshot.py b/cura/Snapshot.py index b730c1fdcf..033b453684 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) 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 100% rename from cura/CuraSplashScreen.py rename to cura/UI/CuraSplashScreen.py 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..7ecd9ed65f --- /dev/null +++ b/cura/UI/MachineSettingsManager.py @@ -0,0 +1,82 @@ +# 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 + +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 usre 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() + material_manager = self._application.getMaterialManager() + + 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: + material_node = material_manager.getDefaultMaterial(global_stack, position, None) + 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 99% rename from cura/PrintInformation.py rename to cura/UI/PrintInformation.py index ba7c74fd6d..3fafaaba12 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") 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/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..080479ee92 100755 --- a/cura_app.py +++ b/cura_app.py @@ -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 @@ -129,5 +141,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..b81d0858a4 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,15 +9,16 @@ 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.Settings.ExtruderManager import ExtruderManager from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Scene.BuildPlateDecorator import BuildPlateDecorator @@ -25,11 +26,9 @@ 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: @@ -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 38652361a5..7154a114a9 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -33,6 +33,8 @@ 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") @@ -59,6 +61,9 @@ 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.custom_quality_name = None self.quality_changes_info = None @@ -227,6 +232,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: @@ -253,13 +259,14 @@ 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 + num_settings_overridden_by_quality_changes = 0 # How many settings are changed by the quality changes num_user_settings = 0 quality_changes_conflict = False @@ -297,7 +304,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") @@ -322,7 +329,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # 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: @@ -342,6 +349,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): global_stack_id = self._stripFileToId(global_stack_file) serialized = archive.open(global_stack_file).read().decode("utf-8") 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 @@ -397,7 +406,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 @@ -419,13 +428,17 @@ 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] @@ -515,7 +528,7 @@ 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.setNumSettingsOverriddenByQualityChanges(num_settings_overridden_by_quality_changes) self._dialog.setNumUserSettings(num_user_settings) self._dialog.setActiveMode(active_mode) self._dialog.setMachineName(machine_name) @@ -648,6 +661,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. @@ -697,6 +711,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) @@ -820,13 +835,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader): container = quality_manager._createQualityChanges(quality_changes_quality_type, quality_changes_name, global_stack, extruder_stack) container_info.container = container + container.setDirty(True) + 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): + @staticmethod + def _clearStack(stack): application = CuraApplication.getInstance() stack.definitionChanges.clear() @@ -903,6 +921,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): continue extruder_info = self._machine_info.extruder_info_dict[position] if extruder_info.variant_info is None: + # If there is no variant_info, try to use the default variant. Otherwise, leave it be. + node = variant_manager.getDefaultVariantNode(global_stack.definition, VariantType.NOZZLE, global_stack) + if node is not None and node.getContainer() is not None: + extruder_stack.variant = node.getContainer() continue parser = extruder_info.variant_info.parser @@ -971,6 +993,11 @@ 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() @@ -983,6 +1010,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): 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: @@ -1009,7 +1041,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # 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/", "") @@ -1018,7 +1051,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) @@ -1039,12 +1073,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..332c57ceb1 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -41,7 +41,7 @@ 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._machine_name = "" self._machine_type = "" @@ -151,10 +151,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) diff --git a/plugins/AMFReader/AMFReader.py b/plugins/AMFReader/AMFReader.py new file mode 100644 index 0000000000..d35fbe3d40 --- /dev/null +++ b/plugins/AMFReader/AMFReader.py @@ -0,0 +1,173 @@ +# Copyright (c) 2019 fieldOfView +# 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..599dc03c76 --- /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": "6.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/src/DriveApiService.py b/plugins/CuraDrive/src/DriveApiService.py index 49e242d851..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. @@ -98,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) @@ -142,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 @@ -159,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/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index ceba5f3006..ddf7864bb3 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -10,20 +10,17 @@ from time import time from typing import Any, cast, Dict, List, Optional, Set, TYPE_CHECKING from UM.Backend.Backend import Backend, BackendState -from UM.Scene.Camera import Camera from UM.Scene.SceneNode import SceneNode 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 @@ -210,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 @@ -225,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) @@ -372,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 @@ -441,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) @@ -463,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") @@ -520,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() @@ -549,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): @@ -566,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() @@ -637,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)) @@ -676,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: @@ -738,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 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 ef97364118..b973a0775a 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -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. @@ -107,7 +108,7 @@ class StartSliceJob(Job): 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 +134,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 +159,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 +169,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 +193,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 +205,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 +222,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 +268,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 +304,7 @@ class StartSliceJob(Job): obj.vertices = flat_verts - self._handlePerObjectSettings(object, obj) + self._handlePerObjectSettings(cast(CuraSceneNode, object), obj) Job.yieldThread() @@ -337,25 +347,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)) @@ -367,8 +381,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", "") @@ -392,7 +412,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/CuraProfileReader/CuraProfileReader.py b/plugins/CuraProfileReader/CuraProfileReader.py index 11e58dac6d..5e2a4266c8 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.QualityManager import getMachineDefinitionIDForQualitySearch 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 = getMachineDefinitionIDForQualitySearch(global_stack.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/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/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/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 b9e948dfea..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,8 +11,14 @@ 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 class GCodeReader(MeshReader): @@ -30,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) @@ -54,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/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index b9ff2e4453..47ba10778c 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,9 +134,9 @@ 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) } } diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py index 5195b61595..e720ce4854 100644 --- a/plugins/ImageReader/ImageReader.py +++ b/plugins/ImageReader/ImageReader.py @@ -46,9 +46,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) - 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): scene_node = SceneNode() mesh = MeshBuilder() @@ -104,7 +104,7 @@ class ImageReader(MeshReader): Job.yieldThread() - if image_color_invert: + if not lighter_is_higher: height_data = 1 - height_data for _ in range(0, blur_iterations): diff --git a/plugins/ImageReader/ImageReaderUI.py b/plugins/ImageReader/ImageReaderUI.py index cb45afa4ad..213468a2ab 100644 --- a/plugins/ImageReader/ImageReaderUI.py +++ b/plugins/ImageReader/ImageReaderUI.py @@ -30,10 +30,10 @@ 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._ui_lock = threading.Lock() self._cancelled = False @@ -143,4 +143,4 @@ class ImageReaderUI(QObject): @pyqtSlot(int) def onImageColorInvertChanged(self, value): - self.image_color_invert = (value == 1) + self.lighter_is_higher = (value == 1) diff --git a/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py index 480a61f301..05f49017a3 100644 --- a/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py +++ b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py @@ -5,6 +5,9 @@ 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 os.path +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 +15,13 @@ 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 = [ { diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index afd7aac86d..d48475b1e6 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -1,16 +1,22 @@ -# 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 from cura.MachineAction import MachineAction 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 +24,102 @@ 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 = [] - - 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 - 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" + extruder_positions = list(global_stack.extruders.keys()) + 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") # set materials for position in extruder_positions: if has_materials: - material_node = material_manager.getDefaultMaterial(self._global_container_stack, position, None) + material_node = material_manager.getDefaultMaterial(global_stack, position, None) machine_manager.setMaterial(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..a1540c22ab 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -1,939 +1,103 @@ -// 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 + UM.TabRow { - id: simpleCheckBox - UM.TooltipArea + id: tabBar + 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..5ba331de2b --- /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.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..d817450f41 --- /dev/null +++ b/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml @@ -0,0 +1,373 @@ +// 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 the content in the "Printer" tab in the Machine Settings dialog. +// +Item +{ + id: base + UM.I18nCatalog { id: catalog; name: "cura" } + + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + 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.activeMachineId + + property var forceUpdateFunction: manager.forceUpdate + + 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 for "Printer Settings" + // ======================================= + Column + { + anchors.top: parent.top + anchors.left: parent.left + width: base.columnWidth + + 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 + { + anchors.top: parent.top + anchors.right: parent.right + width: base.columnWidth + + 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 + + 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 + + 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: 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: 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() + } + } + } + } + + Item // 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 // "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", "Start G-code") + containerStackId: machineStackId + settingKey: "machine_start_gcode" + settingStoreIndex: propertyStoreIndex + } + + Cura.GcodeTextArea // "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", "End G-code") + containerStackId: machineStackId + settingKey: "machine_end_gcode" + settingStoreIndex: propertyStoreIndex + } + } +} diff --git a/plugins/MonitorStage/MonitorMain.qml b/plugins/MonitorStage/MonitorMain.qml index 88193737bb..7c0a20ef66 100644 --- a/plugins/MonitorStage/MonitorMain.qml +++ b/plugins/MonitorStage/MonitorMain.qml @@ -12,7 +12,15 @@ Rectangle id: viewportOverlay property bool isConnected: Cura.MachineManager.activeMachineHasNetworkConnection || Cura.MachineManager.activeMachineHasCloudConnection - property bool isNetworkConfigurable: ["Ultimaker 3", "Ultimaker 3 Extended", "Ultimaker S5"].indexOf(Cura.MachineManager.activeMachineDefinitionName) > -1 + property bool isNetworkConfigurable: + { + if(Cura.MachineManager.activeMachine === null) + { + return false + } + return Cura.MachineManager.activeMachine.supportsNetworkConnection + } + property bool isNetworkConfigured: { // Readability: @@ -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/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/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 0e2bd88619..035d2e5299 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -160,7 +160,7 @@ Item { model: UM.SettingDefinitionsModel { id: addedSettingsModel; - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" expanded: [ "*" ] filter: { @@ -467,7 +467,7 @@ Item { model: UM.SettingDefinitionsModel { id: definitionsModel; - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" visibilityHandler: UM.SettingPreferenceVisibilityHandler {} expanded: [ "*" ] exclude: 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/scripts/ChangeAtZ.py b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py index be9f93c0f6..ba7b06bb1b 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": @@ -410,6 +410,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 +483,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 3ab20b8297..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/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/PauseAtHeight.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py index 8b50a88b7f..913be4e966 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py @@ -1,15 +1,16 @@ -# 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 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 +106,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 +132,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 +151,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 @@ -264,7 +273,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 +283,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 +320,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. @@ -318,7 +332,7 @@ class PauseAtHeight(Script): 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" + 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/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 index 36d0f6a058..53e55a9454 100644 --- a/plugins/PostProcessingPlugin/scripts/TimeLapse.py +++ b/plugins/PostProcessingPlugin/scripts/TimeLapse.py @@ -77,10 +77,10 @@ class TimeLapse(Script): 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 += 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 diff --git a/plugins/PrepareStage/PrepareMenu.qml b/plugins/PrepareStage/PrepareMenu.qml index d8953d7661..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 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/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index 3b2db2efac..28d5a74523 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -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) @@ -218,10 +220,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 +386,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 +443,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 +464,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 @@ -506,6 +517,8 @@ 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: @@ -572,14 +585,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/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/SliceInfoPlugin/MoreInfoWindow.qml b/plugins/SliceInfoPlugin/MoreInfoWindow.qml index e00ad6730d..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 this 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 this 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..9308719227 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -48,20 +48,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 +62,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 +77,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() @@ -140,6 +126,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": @@ -195,6 +185,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..4294b0af6d --- /dev/null +++ b/plugins/SliceInfoPlugin/example_data.html @@ -0,0 +1,64 @@ + + + Cura Version: 4.0
+ Operating System: Windows 10
+ Language: en_US
+ Machine Type: Ultimaker S5
+ 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/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index ec00329f86..a8cff675d9 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,38 @@ 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 = global_container_stack.getExtruderPositionValueWithDefault("support_extruder_nr") + support_angle_stack = global_container_stack.extruders.get(str(support_extruder_nr)) + if support_angle_stack: + self._support_angle = support_angle_stack.getProperty("support_angle", "value") def beginRendering(self): scene = self.getController().getScene() @@ -63,14 +94,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 - if angle is not None and angle >= 0 and angle <= 90: - 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: @@ -112,6 +139,10 @@ class SolidView(View): shade_factor * int(material_color[5:7], 16) / 255, 1.0 ] + + # Color the currently selected face-id. + face = Selection.getSelectedFace() + uniforms["selected_face"] = (Selection.getMaxFaceSelectionId() + 1) if not face or node != face[0] else face[1] except ValueError: pass 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/Toolbox/resources/qml/Toolbox.qml b/plugins/Toolbox/resources/qml/Toolbox.qml index d15d98eed7..f70dab03d8 100644 --- a/plugins/Toolbox/resources/qml/Toolbox.qml +++ b/plugins/Toolbox/resources/qml/Toolbox.qml @@ -48,32 +48,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/ToolboxAuthorPage.qml b/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml index b653f1a73b..08ac1f83a5 100644 --- a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml @@ -65,6 +65,7 @@ Item { id: description text: details.description || "" + font: UM.Theme.getFont("default") anchors { top: title.bottom @@ -108,6 +109,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 +125,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/ToolboxCompatibilityChart.qml b/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml index db4e8c628f..1d1344fa9a 100644 --- a/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml +++ b/plugins/Toolbox/resources/qml/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: catalog.i18nc("@label:table_header", "Print Core") 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/ToolboxConfirmUninstallResetDialog.qml b/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml index e238132680..81649fdfef 100644 --- a/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml +++ b/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml @@ -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/ToolboxDetailList.qml b/plugins/Toolbox/resources/qml/ToolboxDetailList.qml index 4e44ea7d0b..22c6b6045f 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxDetailPage.qml b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml index fef2732af9..1773ef9053 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml @@ -89,6 +89,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/ToolboxDetailTile.qml b/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml index c7bb1f60ac..5badc6b66d 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxDetailTileActions.qml index 60fe095537..dfe91edbf6 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxDownloadsGrid.qml index a9fcb39b28..6682281a31 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxDownloadsGridTile.qml index 7844a5c394..73dd593336 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml @@ -76,7 +76,7 @@ Item height: (parent.height * 0.4) | 0 anchors { - bottom: parent.bottomcommi + bottom: parent.bottom right: parent.right } sourceSize.height: height diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml index 3e0dda4f4a..57fb3a9279 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml @@ -1,25 +1,22 @@ -// 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 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 +28,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/ToolboxDownloadsShowcase.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml index 795622cf82..72dd6f91a2 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxHeader.qml b/plugins/Toolbox/resources/qml/ToolboxHeader.qml index 087402d564..491567eb5f 100644 --- a/plugins/Toolbox/resources/qml/ToolboxHeader.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxInstalledPage.qml b/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml index 0c43c67679..f4a9e634c4 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml @@ -1,50 +1,50 @@ -// 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 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 @@ -65,8 +65,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") @@ -75,9 +82,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/ToolboxInstalledTile.qml b/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml index f50c3f3ac6..f85a1056b7 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxInstalledTileActions.qml index 61af84fbe5..db30b1caf5 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml +++ b/plugins/Toolbox/resources/qml/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/ToolboxProgressButton.qml b/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml index 4d4ae92e73..40d6c1af47 100644 --- a/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml +++ b/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml @@ -1,16 +1,16 @@ -// 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.2 -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 Cura 1.0 as Cura -Item +Cura.PrimaryButton { - id: base + id: button property var active: false property var complete: false @@ -25,43 +25,36 @@ Item width: UM.Theme.getSize("toolbox_action_button").width height: UM.Theme.getSize("toolbox_action_button").height - - Cura.PrimaryButton + fixedWidthMode: true + text: { - id: button - width: UM.Theme.getSize("toolbox_action_button").width - height: UM.Theme.getSize("toolbox_action_button").height - fixedWidthMode: true - text: + if (complete) { - if (complete) - { - return completeLabel - } - else if (active) - { - return activeLabel - } - else - { - return readyLabel - } + return completeLabel } - onClicked: + else if (active) { - if (complete) - { - completeAction() - } - else if (active) - { - activeAction() - } - else - { - readyAction() - } + return activeLabel + } + else + { + return readyLabel } - busy: active } + onClicked: + { + if (complete) + { + completeAction() + } + else if (active) + { + activeAction() + } + else + { + readyAction() + } + } + busy: active } diff --git a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml b/plugins/Toolbox/resources/qml/ToolboxTabButton.qml index 5e1aeaa636..7a7d2be48a 100644 --- a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml +++ b/plugins/Toolbox/resources/qml/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/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/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..4dabba87a0 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -50,7 +50,6 @@ class Toolbox(QObject, Extension): 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] @@ -106,6 +105,7 @@ class Toolbox(QObject, Extension): self._application.initializationFinished.connect(self._onAppInitialized) self._application.getCuraAPI().account.loginStateChanged.connect(self._updateRequestHeader) + self._application.getCuraAPI().account.accessTokenChanged.connect(self._updateRequestHeader) # Signals: # -------------------------------------------------------------------------- @@ -190,8 +190,10 @@ class Toolbox(QObject, Extension): "packages": QUrl("{base_url}/packages".format(base_url = self._api_url)) } - @pyqtSlot() - def browsePackages(self) -> None: + # Request the latest and greatest! + self._fetchPackageData() + + def _fetchPackageData(self): # 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. @@ -209,6 +211,10 @@ class Toolbox(QObject, Extension): # Gather installed packages: self._updateInstalledModels() + @pyqtSlot() + def browsePackages(self) -> None: + self._fetchPackageData() + if not self._dialog: self._dialog = self._createDialog("Toolbox.qml") @@ -272,7 +278,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) @@ -455,36 +461,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 +526,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 +560,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) @@ -632,11 +614,12 @@ class Toolbox(QObject, Extension): 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"}) @@ -656,6 +639,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 @@ -667,8 +655,12 @@ class Toolbox(QObject, Extension): # 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..5e2885238f --- /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 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..61c66aa5e8 --- /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": "6.0.0" +} diff --git a/plugins/UFPReader/UFPReader.py b/plugins/UFPReader/UFPReader.py index cec70ef655..71061f938b 100644 --- a/plugins/UFPReader/UFPReader.py +++ b/plugins/UFPReader/UFPReader.py @@ -1,15 +1,16 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import cast +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 -from cura.Scene.CuraSceneNode import CuraSceneNode -from plugins.GCodeReader.GCodeReader import GCodeReader + +if TYPE_CHECKING: + from cura.Scene.CuraSceneNode import CuraSceneNode class UFPReader(MeshReader): @@ -26,7 +27,7 @@ class UFPReader(MeshReader): ) self._supported_extensions = [".ufp"] - def _read(self, file_name: str) -> CuraSceneNode: + def _read(self, file_name: str) -> "CuraSceneNode": # Open the file archive = VirtualFile() archive.open(file_name) @@ -36,6 +37,6 @@ class UFPReader(MeshReader): gcode_stream = gcode_data["/3D/model.gcode"].decode("utf-8") # Open the GCodeReader to parse the data - gcode_reader = cast(GCodeReader, PluginRegistry.getInstance().getPluginObject("GCodeReader")) - gcode_reader.preReadFromStream(gcode_stream) - return gcode_reader.readFromStream(gcode_stream) + 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 index 8f405d4f66..cfea4b9882 100644 --- a/plugins/UFPReader/__init__.py +++ b/plugins/UFPReader/__init__.py @@ -1,10 +1,15 @@ #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 - -from . import UFPReader - i18n_catalog = i18nCatalog("cura") @@ -21,6 +26,9 @@ def getMetaData(): def register(app): + if "UFPReader.UFPReader" not in sys.modules: + return {} + app.addNonSliceableExtension(".ufp") return {"mesh_reader": UFPReader.UFPReader()} 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..039b412643 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", + "description": "Manages network connections to Ultimaker networked printers.", + "version": "2.0.0", "api": "6.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 c0369cac0b..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 @@ -53,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..b27416e199 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,13 @@ 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) { + // It would be great to use a more readable machine type here, + // but the new discoveredPrintersModel is not used yet in the UM networking actions. + // TODO: remove actions or replace 'connect via network' button with new flow? + return base.selectedDevice.printerType } + return "" } } Label @@ -342,6 +291,17 @@ Cura.MachineAction } } + MessageDialog + { + id: invalidIPAddressMessageDialog + x: (parent.x + (parent.width) / 2) | 0 + y: (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 +331,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 +364,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 ba85802809..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 @@ -23,9 +23,10 @@ Button 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..48bab48a9f 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 @@ -22,31 +22,18 @@ Item width: childrenRect.width height: 18 * screenScaleFactor // TODO: Theme! - 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_column").width } + Label { id: percentLabel @@ -54,6 +41,7 @@ Item { left: progressBar.right leftMargin: 18 * screenScaleFactor // TODO: Theme! + 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") @@ -63,6 +51,7 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } Label { @@ -71,6 +60,7 @@ Item { left: percentLabel.right leftMargin: 18 * screenScaleFactor // TODO: Theme! + verticalCenter: parent.verticalCenter } color: UM.Theme.getColor("monitor_text_primary") font: UM.Theme.getFont("medium") // 14pt, regular @@ -115,5 +105,6 @@ 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/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 9bee89c9bc..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 @@ -29,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 @@ -41,7 +42,6 @@ Item } height: 18 * screenScaleFactor // TODO: Theme! width: childrenRect.width - visible: !cloudConnection UM.RecolorImage { @@ -64,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 } } @@ -72,9 +72,7 @@ Item MouseArea { anchors.fill: manageQueueLabel - enabled: !cloudConnection - hoverEnabled: !cloudConnection - onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel() + onClicked: OutputDevice.openPrintJobControlPanel() onEntered: { manageQueueText.font.underline = true @@ -97,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") @@ -109,6 +122,8 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + visible: printJobList.count > 0 } Label @@ -118,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 @@ -132,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 } } @@ -168,10 +187,7 @@ 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.activeMachineIsUsingCloudConnection || OutputDevice.receivedPrintJobs) + if (OutputDevice.receivedData) { return OutputDevice.queuedPrintJobs } @@ -180,88 +196,4 @@ Item 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: i18n.i18nc("@info", "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 - visible: !cloudConnection - - 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 - } - } - } - } - } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml index e68418c21a..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 @@ -52,10 +52,7 @@ Component id: carousel printers: { - // 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.activeMachineIsUsingCloudConnection || OutputDevice.receivedPrintJobs) + if (OutputDevice.receivedData) { return OutputDevice.printers } 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..bcba60352c 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.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 @@ -78,6 +78,7 @@ UM.Dialog { height: 20 * screenScaleFactor; text: catalog.i18nc("@label", "Printer selection"); wrapMode: Text.Wrap; + renderType: Text.NativeRendering; } ComboBox { 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 d052d925d2..75e2b30ff1 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py @@ -1,39 +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.PluginRegistry import PluginRegistry -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") @@ -43,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 @@ -68,49 +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. - if PluginRegistry.getInstance() is not None: - self._monitor_view_qml_path = os.path.join( - PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), - "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] @@ -121,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) @@ -133,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(self.clusterData.host_name): + 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 + if self.clusterData.host_internal_ip is not None and network_key in self.clusterData.host_internal_ip: + 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: @@ -143,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..1da099dadc 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py @@ -1,30 +1,27 @@ -# 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.Signal import Signal from cura.API import Account from cura.CuraApplication import CuraApplication 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 +29,153 @@ 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: print(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 + + # The newly added machine is automatically activated. + machine_manager = CuraApplication.getInstance().getMachineManager() + machine_manager.addMachine(device.printerType, device.clusterData.friendly_name) + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + active_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) + self._connectToOutputDevice(device, active_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) 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/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 da63f11158..0000000000 --- a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py +++ /dev/null @@ -1,705 +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.i18n import i18nCatalog -from UM.Logger import Logger -from UM.Message import Message -from UM.PluginRegistry import PluginRegistry -from UM.Qt.Duration import Duration, DurationFormat -from UM.Scene.SceneNode import SceneNode # For typing. -from UM.Settings.ContainerRegistry import ContainerRegistry - -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 - - if PluginRegistry.getInstance() is not None: - self._monitor_view_qml_path = os.path.join( - PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), - "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: - if PluginRegistry.getInstance() is not None: - path = os.path.join( - PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), - "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 2c7c33d382..0000000000 --- a/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py +++ /dev/null @@ -1,644 +0,0 @@ -from typing import List, Optional - -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.FileHandler.FileHandler import FileHandler -from UM.i18n import i18nCatalog -from UM.Logger import Logger -from UM.Message import Message -from UM.PluginRegistry import PluginRegistry -from UM.Scene.SceneNode import SceneNode -from UM.Settings.ContainerRegistry import ContainerRegistry - -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") - - if PluginRegistry.getInstance() is not None: - self._monitor_view_qml_path = os.path.join( - PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), - "resources", "qml", "MonitorStage.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..4f2f7a71a2 --- /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=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..e54d99f1e6 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobStatus.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobStatus.py @@ -1,22 +1,25 @@ -# 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 PyQt5.QtCore import QUrl + +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 +48,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 +79,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/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py similarity index 79% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py index 652cbdabda..378a885a3b 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py @@ -1,14 +1,16 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. from typing import Optional -from UM.Logger import Logger from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel -from .BaseCloudModel import BaseCloudModel +from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel + +from ..BaseModel import BaseModel -## Class representing a cloud cluster printer configuration -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrinterConfigurationMaterial(BaseCloudModel): +## 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'. @@ -45,11 +47,9 @@ class CloudClusterPrinterConfigurationMaterial(BaseCloudModel): 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) + return MaterialOutputModel(guid=self.guid, type=material_type, brand=brand, color=color, name=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..69daa1f08b --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py @@ -0,0 +1,146 @@ +# 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.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..f61982b9a8 --- /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): + 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..fd9a9e2f60 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py @@ -0,0 +1,171 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, Dict, List, Callable, Any + +from PyQt5.QtGui import QDesktopServices +from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty +from PyQt5.QtNetwork import QNetworkReply + +from UM.FileHandler.FileHandler import FileHandler +from UM.i18n import i18nCatalog +from UM.Scene.SceneNode import SceneNode +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] + + # 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() + + ## Handler for when the print job was created locally. + # It can now be sent over the network. + def _onPrintJobCreated(self, job: ExportFileJob) -> None: + self._progress.show() + parts = [ + self._createFormPart("name=owner", bytes(self._getUserName(), "utf-8"), "text/plain"), + self._createFormPart("name=\"file\"; filename=\"%s\"" % job.getFileName(), job.getOutput()) + ] + # FIXME: move form posting to API client + self.postFormWithParts("/cluster-api/v1/print_jobs/", parts, on_finished=self._onPrintUploadCompleted, + on_progress=self._onPrintJobUploadProgress) + + ## 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: print(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..89fd71d03c --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDeviceManager.py @@ -0,0 +1,249 @@ +# 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.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: print(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) + + ## 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. + CuraApplication.getInstance().getOutputDeviceManager().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 + + # The newly added machine is automatically activated. + CuraApplication.getInstance().getMachineManager().addMachine(device.printerType, device.name) + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + self._connectToOutputDevice(device, active_machine) + CloudFlowMessage(device.ipAddress).show() # Nudge the user to start using Ultimaker Cloud. + + ## 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) diff --git a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py b/plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py similarity index 65% rename from plugins/UM3NetworkPrinting/src/SendMaterialJob.py rename to plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py index f0fde818c4..2ad21d2f29 100644 --- a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py +++ b/plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py @@ -1,20 +1,19 @@ # 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 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,68 +21,49 @@ 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() @@ -104,9 +84,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,48 +104,30 @@ 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() # Find the latest version of all material containers in the registry. diff --git a/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py new file mode 100644 index 0000000000..b6416b2bd0 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py @@ -0,0 +1,140 @@ +# 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() + self._service_changed_request_thread = Thread(target=self._handleOnServiceChangedRequests, daemon=True) + self._service_changed_request_thread.start() + self._zero_conf = Zeroconf() + 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 a32193849e..3ab37297b5 100644 --- a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py @@ -1,539 +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.i18n import i18nCatalog -from UM.Logger import Logger -from UM.Message import Message +from UM.OutputDevice.OutputDeviceManager import ManualDeviceAdditionAttempt from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin -from UM.PluginRegistry import PluginRegistry -from UM.Signal import Signal, signalemitter -from UM.Version import Version -from . import ClusterUM3OutputDevice, LegacyUM3OutputDevice +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._createCloudFlowStartMessage() - if self._start_cloud_flow_message and not self._start_cloud_flow_message.visible: - self._start_cloud_flow_message.show() - - def _onCloudPrintingConfigured(self) -> None: - # Hide the cloud flow start message if it was hanging around already - # For example: if the user already had the browser openen and made the association themselves - if self._start_cloud_flow_message and self._start_cloud_flow_message.visible: - self._start_cloud_flow_message.hide() - - # Cloud flow is complete, so show the message - if not self._cloud_flow_complete_message: - self._createCloudFlowCompleteMessage() - if self._cloud_flow_complete_message and not self._cloud_flow_complete_message.visible: - 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: - # Hide any left over messages - if self._start_cloud_flow_message is not None and self._start_cloud_flow_message.visible: - self._start_cloud_flow_message.hide() - if self._cloud_flow_complete_message is not None and self._cloud_flow_complete_message.visible: - self._cloud_flow_complete_message.hide() - - # Check for cloud flow again with newly selected machine - self.checkCloudFlowIsPossible() - - def _createCloudFlowStartMessage(self): - 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 = QUrl.fromLocalFile(os.path.join( - PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), - "resources", "svg", "cloud-flow-start.svg" - )), - image_caption = i18n_catalog.i18nc("@info:status Ultimaker Cloud is a brand name and shouldn't be translated.", "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) - - def _createCloudFlowCompleteMessage(self): - 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 = QUrl.fromLocalFile(os.path.join( - PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), - "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) \ No newline at end of file + ## 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..02ce91800d --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterOutputDevice.py @@ -0,0 +1,344 @@ +# 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")) + + # 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 + + # 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 ff59589923..e32e4c8745 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -6,13 +6,14 @@ import os 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 @@ -23,11 +24,15 @@ from queue import Queue from serial import Serial, SerialException, SerialTimeoutException from threading import Thread, Event from time import time -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") @@ -112,16 +117,20 @@ 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: + 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") @@ -181,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() @@ -226,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: @@ -371,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/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 index 6ff3f0b629..999cb1d35a 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py @@ -1,13 +1,15 @@ # 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 PyQt5.QtCore import pyqtSignal, pyqtProperty +from UM.Settings.ContainerRegistry import ContainerRegistry from UM.i18n import i18nCatalog from UM.Application import Application from UM.Util import parseBool + +from cura.MachineAction import MachineAction + catalog = i18nCatalog("cura") diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml index 793f3f00a8..13525f6eb3 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml @@ -1,49 +1,46 @@ -// 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 2."); + text: catalog.i18nc("@label", "Please select any upgrades made to this Ultimaker 2.") + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } - CheckBox + Cura.CheckBox { id: olssonBlockCheckBox anchors.top: pageDescription.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height + height: UM.Theme.getSize("setting_control").height + text: catalog.i18nc("@label", "Olsson Block") checked: manager.hasVariants onClicked: manager.hasVariants = checked @@ -54,7 +51,5 @@ Cura.MachineAction 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/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/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/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/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/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/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/VersionUpgrade41to42/VersionUpgrade41to42.py b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py new file mode 100644 index 0000000000..a5a77a91e0 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py @@ -0,0 +1,338 @@ +# 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) + 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]: + 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..6fd1309747 --- /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 } \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json b/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json new file mode 100644 index 0000000000..9f8edea286 --- /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": "6.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py new file mode 100644 index 0000000000..6bcf43dc71 --- /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) + 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..339ec67ee7 --- /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": "6.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/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 27c401fcd4..04ed112aa1 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 @@ -19,7 +19,10 @@ from UM.ConfigurationErrorMessage import ConfigurationErrorMessage from cura.CuraApplication import CuraApplication 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 +43,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,9 +66,19 @@ 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 + # 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 + # Prevent recursion if not apply_to_all: super().setMetaDataEntry(key, value) + for k, v in new_setting_values_dict.items(): + self.setProperty(k, "value", v) return # Get the MaterialGroup @@ -74,17 +87,23 @@ class XmlMaterialProfile(InstanceContainer): material_group = material_manager.getMaterialGroup(root_material_id) if not material_group: #If the profile is not registered in the registry but loose/temporary, it will not have a base file tree. super().setMetaDataEntry(key, value) + for k, v in new_setting_values_dict.items(): + self.setProperty(k, "value", v) return # 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) + for k, v in new_setting_values_dict.items(): + root_material_container.setProperty(k, "value", v) # 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 k, v in new_setting_values_dict.items(): + container.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 @@ -144,7 +163,7 @@ 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", "definition", "status", "variant", "type", "base_file", "approximate_diameter", "id", "container_type", "name"} + 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: @@ -174,13 +193,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 @@ -390,7 +412,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"] @@ -406,15 +429,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: @@ -424,7 +447,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) @@ -814,9 +837,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) @@ -950,7 +973,7 @@ class XmlMaterialProfile(InstanceContainer): 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")) @@ -982,7 +1005,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: @@ -1111,8 +1134,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": @@ -1120,8 +1143,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: @@ -1159,14 +1182,16 @@ class XmlMaterialProfile(InstanceContainer): 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", @@ -1179,7 +1204,15 @@ 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 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/product_to_id.json b/plugins/XmlMaterialProfile/product_to_id.json index 6b78d3fe64..a48eb20a18 100644 --- a/plugins/XmlMaterialProfile/product_to_id.json +++ b/plugins/XmlMaterialProfile/product_to_id.json @@ -6,6 +6,7 @@ "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", 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/resources/bundled_packages/cura.json b/resources/bundled_packages/cura.json index d359daea24..4d23d56e5c 100644 --- a/resources/bundled_packages/cura.json +++ b/resources/bundled_packages/cura.json @@ -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", + "display_name": "AMF Reader", + "description": "Provides support for reading AMF files.", + "package_version": "1.0.0", "sdk_version": "6.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" } @@ -577,23 +577,6 @@ } } }, - "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.0", - "website": "https://ultimaker.com", - "author": { - "author_id": "UltimakerPackages", - "display_name": "Ultimaker B.V.", - "email": "plugins@ultimaker.com", - "website": "https://ultimaker.com" - } - } - }, "VersionUpgrade21to22": { "package_info": { "package_id": "VersionUpgrade21to22", @@ -781,6 +764,40 @@ } } }, + "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": "6.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": "6.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, "X3DReader": { "package_info": { "package_id": "X3DReader", @@ -1653,4 +1670,4 @@ } } } -} \ No newline at end of file +} diff --git a/resources/definitions/101Hero.def.json b/resources/definitions/101Hero.def.json index d77f01fd82..a77ea5ed97 100644 --- a/resources/definitions/101Hero.def.json +++ b/resources/definitions/101Hero.def.json @@ -38,7 +38,7 @@ "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..901ea87510 100644 --- a/resources/definitions/3dator.def.json +++ b/resources/definitions/3dator.def.json @@ -45,7 +45,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..6a385c4b8b --- /dev/null +++ b/resources/definitions/Mark2_for_Ultimaker2.def.json @@ -0,0 +1,227 @@ +{ + "id": "Mark2_for_Ultimaker2", + "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_layer_0": { + "default_value": 20 + }, + "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": { + "default_value": 0, + "value": "retraction_amount", + "enabled": false + }, + "switch_extruder_retraction_speeds": { + "default_value": 25, + "value": "retraction_speed", + "enabled": false + }, + "switch_extruder_retraction_speed": { + "default_value": 25, + "value": "retraction_retract_speed", + "enabled": false + }, + "switch_extruder_prime_speed": { + "default_value": 25, + "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" : { + "default_value": "", + "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" : { + "default_value": "", + "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": + { + "default_value": 2000, + "value": "2000" + }, + "acceleration_travel": + { + "default_value": 3000, + "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": + { + "default_value": 20, + "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": { + "default_value": 185 + }, + "prime_tower_position_y": { + "default_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/alfawise_u20.def.json b/resources/definitions/alfawise_u20.def.json index 8a6badeca6..748bf8797a 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)" diff --git a/resources/definitions/alfawise_u30.def.json b/resources/definitions/alfawise_u30.def.json index bba1c056af..44caf61d1a 100644 --- a/resources/definitions/alfawise_u30.def.json +++ b/resources/definitions/alfawise_u30.def.json @@ -36,7 +36,7 @@ "retraction_enable": { "default_value": true }, "retraction_amount": { "default_value": 5 }, "retraction_speed": { "default_value": 45 }, - "gantry_height": { "default_value": 25 }, + "gantry_height": { "value": "25" }, "machine_width": { "default_value": 220 }, "machine_height": { "default_value": 250 }, "machine_depth": { "default_value": 220 }, diff --git a/resources/definitions/alya3dp.def.json b/resources/definitions/alya3dp.def.json index f449a89970..8de7c79641 100644 --- a/resources/definitions/alya3dp.def.json +++ b/resources/definitions/alya3dp.def.json @@ -30,7 +30,7 @@ "machine_height": { "default_value": 133 }, "machine_depth": { "default_value": 100 }, "machine_center_is_zero": { "default_value": false }, - "gantry_height": { "default_value": 55 }, + "gantry_height": { "value": "55"}, "retraction_amount": { "default_value": 1.5 }, "support_enable": { "default_value": true}, "machine_head_with_fans_polygon": { @@ -44,7 +44,7 @@ }, "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{travel_speed} ;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}" + "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 index efc97c09d1..07e0a090a9 100644 --- a/resources/definitions/alyanx3dp.def.json +++ b/resources/definitions/alyanx3dp.def.json @@ -30,7 +30,7 @@ "machine_height": { "default_value": 170 }, "machine_depth": { "default_value": 160 }, "machine_center_is_zero": { "default_value": false }, - "gantry_height": { "default_value": 55 }, + "gantry_height": { "value": "55"}, "retraction_amount": { "default_value": 1.5 }, "support_enable": { "default_value": true}, "machine_head_with_fans_polygon": { @@ -44,7 +44,7 @@ }, "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{travel_speed} ;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}" + "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 index 83c2056d76..1b18a936a7 100644 --- a/resources/definitions/anycubic_chiron.def.json +++ b/resources/definitions/anycubic_chiron.def.json @@ -52,7 +52,7 @@ }, "gantry_height": { - "default_value": 35 + "value": "35" }, "machine_head_with_fans_polygon": { diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index 8a96d98023..cc9832cf09 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": { @@ -58,7 +58,7 @@ }, "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/bibo2_dual.def.json b/resources/definitions/bibo2_dual.def.json index 1ae16a49b1..e86c979260 100644 --- a/resources/definitions/bibo2_dual.def.json +++ b/resources/definitions/bibo2_dual.def.json @@ -5,7 +5,7 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "na", + "author": "unknown", "manufacturer": "BIBO", "category": "Other", "file_formats": "text/x-gcode", @@ -64,7 +64,7 @@ ] }, "gantry_height": { - "default_value": 12 + "value": "12" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json index 2e0cd4f839..3ceae8d63f 100644 --- a/resources/definitions/builder_premium_large.def.json +++ b/resources/definitions/builder_premium_large.def.json @@ -93,7 +93,7 @@ "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 }, + "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..5f608ba2a8 100644 --- a/resources/definitions/builder_premium_medium.def.json +++ b/resources/definitions/builder_premium_medium.def.json @@ -93,7 +93,7 @@ "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 }, + "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..a19773ec05 100644 --- a/resources/definitions/builder_premium_small.def.json +++ b/resources/definitions/builder_premium_small.def.json @@ -92,7 +92,7 @@ "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 }, + "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..4ed1a9f2d9 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 }, diff --git a/resources/definitions/cocoon_create_modelmaker.def.json b/resources/definitions/cocoon_create_modelmaker.def.json index 22aa75d09e..83d1f41a99 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)" diff --git a/resources/definitions/creality_base.def.json b/resources/definitions/creality_base.def.json new file mode 100644 index 0000000000..d7e028f31a --- /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 positionning\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..0117c4fffe 100644 --- a/resources/definitions/creality_cr-x.def.json +++ b/resources/definitions/creality_cr-x.def.json @@ -30,7 +30,7 @@ "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 }, diff --git a/resources/definitions/creality_cr10.def.json b/resources/definitions/creality_cr10.def.json index fb63867163..0a08c56cc6 100644 --- a/resources/definitions/creality_cr10.def.json +++ b/resources/definitions/creality_cr10.def.json @@ -1,95 +1,32 @@ { "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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] ] }, - "layer_height_0": { - "default_value": 0.2 + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "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_cr10mini.def.json b/resources/definitions/creality_cr10mini.def.json new file mode 100644 index 0000000000..bdc0d4406e --- /dev/null +++ b/resources/definitions/creality_cr10mini.def.json @@ -0,0 +1,32 @@ +{ + "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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] + ] + }, + "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..593a526fc3 100644 --- a/resources/definitions/creality_cr10s4.def.json +++ b/resources/definitions/creality_cr10s4.def.json @@ -1,26 +1,32 @@ { - "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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] + ] }, - "machine_height": { - "default_value": 400 + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "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..91469deb7f 100644 --- a/resources/definitions/creality_cr10s5.def.json +++ b/resources/definitions/creality_cr10s5.def.json @@ -1,26 +1,32 @@ { - "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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] + ] }, - "machine_height": { - "default_value": 500 + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "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..86897e711a --- /dev/null +++ b/resources/definitions/creality_cr10spro.def.json @@ -0,0 +1,31 @@ +{ + "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_polygon": { "default_value": [ + [-44, 34], + [-44, -34], + [18, -34], + [18, 34] + ] + }, + "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..af027f2452 --- /dev/null +++ b/resources/definitions/creality_cr20.def.json @@ -0,0 +1,32 @@ +{ + "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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] + ] + }, + "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..55b2e88478 --- /dev/null +++ b/resources/definitions/creality_ender2.def.json @@ -0,0 +1,33 @@ +{ + "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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] + ] + }, + "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 1af70fab63..645be52bc8 --- a/resources/definitions/creality_ender3.def.json +++ b/resources/definitions/creality_ender3.def.json @@ -1,93 +1,32 @@ { "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": { - "default_value": [ - [-30, 34], - [-30, -32], - [30, -32], - [30, 34] + "machine_name": { "default_value": "Creality Ender-3" }, + "machine_width": { "default_value": 220 }, + "machine_depth": { "default_value": 220 }, + "machine_height": { "default_value": 250 }, + "machine_head_polygon": { "default_value": [ + [-1, 1], + [-1, -1], + [1, -1], + [1, 1] ] }, - "material_diameter": { - "default_value": 1.75 + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "acceleration_enabled": { - "default_value": true - }, - "acceleration_print": { - "default_value": 500 - }, - "acceleration_travel": { - "value": "acceleration_print" - }, - "jerk_enabled": { - "default_value": true - }, - "jerk_travel": { - "value": "jerk_print" - }, - "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" - }, - "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 } } -} +} \ No newline at end of file diff --git a/resources/definitions/creality_ender4.def.json b/resources/definitions/creality_ender4.def.json new file mode 100644 index 0000000000..6962be558e --- /dev/null +++ b/resources/definitions/creality_ender4.def.json @@ -0,0 +1,34 @@ +{ + "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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] + ] + }, + "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..d95f4a1467 --- /dev/null +++ b/resources/definitions/creality_ender5.def.json @@ -0,0 +1,35 @@ +{ + "name": "Creality Ender-5", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-5" }, + "machine_end_gcode": { "default_value": "G91 ;Relative positionning\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_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [22, -32], + [22, 34] + ] + }, + "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..1491089e24 100644 --- a/resources/definitions/creatable_d3.def.json +++ b/resources/definitions/creatable_d3.def.json @@ -24,8 +24,8 @@ "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 }, "retraction_combing": { "default_value": "off" }, diff --git a/resources/definitions/dagoma_discoeasy200.def.json b/resources/definitions/dagoma_discoeasy200.def.json index 89d94ff6b7..17e285a422 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" diff --git a/resources/definitions/dagoma_magis.def.json b/resources/definitions/dagoma_magis.def.json index 75e6e449cd..9d2f7170c6 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" diff --git a/resources/definitions/dagoma_neva.def.json b/resources/definitions/dagoma_neva.def.json index 67c8795678..ea6046b613 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" diff --git a/resources/definitions/deltabot.def.json b/resources/definitions/deltabot.def.json index 95435f659d..613b61d32c 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": diff --git a/resources/definitions/deltacomb.def.json b/resources/definitions/deltacomb.def.json index 026dfca9ed..c46beeec2d 100755 --- a/resources/definitions/deltacomb.def.json +++ b/resources/definitions/deltacomb.def.json @@ -13,7 +13,6 @@ "platform": "deltacomb.stl", "has_machine_quality": true, "has_materials": true, - "has_machine_materials": false, "has_variants": true, "variants_name": "Head", "preferred_variant_name": "E3D 0.40mm", diff --git a/resources/definitions/easyarts_ares.def.json b/resources/definitions/easyarts_ares.def.json index 5655d0a795..0e2742f484 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": { diff --git a/resources/definitions/erzay3d.def.json b/resources/definitions/erzay3d.def.json new file mode 100644 index 0000000000..0a6d676bea --- /dev/null +++ b/resources/definitions/erzay3d.def.json @@ -0,0 +1,121 @@ +{ + "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 }, + "roofing_pattern": { "default_value": "concentric" }, + + "infill_sparse_density": { "default_value": 20 }, + "infill_line_distance": { "default_value": 4 }, + + "default_material_print_temperature": { "default_value": 220 }, + "material_print_temperature": { "default_value": 220 }, + "material_print_temperature_layer_0": { "default_value": 220 }, + "material_initial_print_temperature": { "default_value": 220 }, + "material_final_print_temperature": { "default_value": 220 }, + "retraction_amount": { "default_value": 6.5 }, + + "speed_print": { "default_value": 40 }, + "speed_infill": { "default_value": 60 }, + "speed_wall": { "default_value": 20 }, + "speed_wall_0": { "default_value": 20 }, + "speed_wall_x": { "default_value": 40 }, + "speed_roofing": { "default_value": 20 }, + "speed_topbottom": { "default_value": 20 }, + "speed_support": { "default_value": 40 }, + "speed_support_infill": { "default_value": 40 }, + "speed_support_interface": { "default_value": 25 }, + "speed_support_roof": { "default_value": 25 }, + "speed_support_bottom": { "default_value": 25 }, + "speed_prime_tower": { "default_value": 40 }, + "speed_travel": { "default_value": 100 }, + "speed_layer_0": { "default_value": 20 }, + "speed_print_layer_0": { "default_value": 20 }, + "speed_travel_layer_0": { "default_value": 80 }, + "skirt_brim_speed": { "default_value": 20 }, + "speed_equalize_flow_enabled": { "default_value": true }, + "speed_equalize_flow_max": { "default_value": 100 }, + + "acceleration_print": { "default_value": 1000 }, + "acceleration_infill": { "default_value": 3000 }, + "acceleration_wall": { "default_value": 1000 }, + "acceleration_wall_0": { "default_value": 1000 }, + "acceleration_wall_x": { "default_value": 1000 }, + "acceleration_roofing": { "default_value": 1000 }, + "acceleration_topbottom": { "default_value": 1000 }, + "acceleration_support": { "default_value": 1000 }, + "acceleration_support_infill": { "default_value": 1000 }, + "acceleration_support_interface": { "default_value": 1000 }, + "acceleration_support_roof": { "default_value": 1000 }, + "acceleration_support_bottom": { "default_value": 1000 }, + "acceleration_prime_tower": { "default_value": 1000 }, + "acceleration_travel": { "default_value": 1500 }, + "acceleration_layer_0": { "default_value": 1000 }, + "acceleration_print_layer_0": { "default_value": 1000 }, + "acceleration_travel_layer_0": { "default_value": 1000 }, + "acceleration_skirt_brim": { "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..959a5bdaec 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 }, diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index ac50884888..6554b2aa0f 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": 7, + "setting_version": 9, "visible": false, "position": "0" }, diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 1e39576391..9ad2964e0d 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -7,7 +7,7 @@ "author": "Ultimaker", "category": "Other", "manufacturer": "Unknown", - "setting_version": 7, + "setting_version": 9, "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g", "visible": false, "has_materials": true, @@ -17,7 +17,8 @@ { "0": "fdmextruder" }, - "supports_usb_connection": true + "supports_usb_connection": true, + "supports_network_connection": false }, "settings": { @@ -203,6 +204,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 +238,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 +251,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 +263,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 +274,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 +287,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 +321,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 +332,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 +354,7 @@ }, "machine_gcode_flavor": { - "label": "G-code flavour", + "label": "G-code Flavor", "description": "The type of g-code to be generated.", "type": "enum", "options": @@ -376,7 +387,7 @@ }, "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": @@ -400,7 +411,7 @@ }, "machine_head_polygon": { - "label": "Machine head polygon", + "label": "Machine Head Polygon", "description": "A 2D silhouette of the print head (fan caps excluded).", "type": "polygon", "default_value": @@ -428,7 +439,7 @@ }, "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 +467,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 +499,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 +534,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 +545,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 +556,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 +902,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 +918,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 +935,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 +951,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 +973,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 } } }, @@ -1315,8 +1327,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 +1336,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 +1409,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", + "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", + "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 +1488,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 +1511,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 +1625,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 +1787,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 +1865,6 @@ } } }, - "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 - } - } - }, "infill_wipe_dist": { "label": "Infill Wipe Distance", @@ -1924,7 +1970,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 +1984,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 +1997,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 +2012,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 +2026,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 +2039,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 +2097,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", @@ -2139,9 +2200,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 +2217,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 +2234,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 +2279,107 @@ "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_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 +2391,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 +2588,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", @@ -2382,10 +2732,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 +2816,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 +2953,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 +2970,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 +2985,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 +3002,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 +3018,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, @@ -2755,16 +3118,16 @@ "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 }, @@ -2930,7 +3293,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, @@ -2947,7 +3310,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 @@ -2963,7 +3326,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, @@ -2980,7 +3343,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 @@ -2996,7 +3359,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 @@ -3215,7 +3578,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", @@ -3231,7 +3594,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 @@ -3246,7 +3609,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, @@ -3262,7 +3625,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 @@ -3277,7 +3640,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 @@ -3455,17 +3818,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", @@ -3528,6 +3880,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 } } }, @@ -3841,7 +4207,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 @@ -3905,16 +4271,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 }, @@ -3938,7 +4302,7 @@ "default_value": 8.0, "minimum_value": "0.0", "maximum_value_warning": "50.0", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr", @@ -3953,7 +4317,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", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr" @@ -4075,7 +4439,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, @@ -4091,7 +4455,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", @@ -4242,7 +4606,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": @@ -4400,7 +4764,7 @@ "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": { @@ -4415,7 +4779,7 @@ "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": @@ -4429,7 +4793,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 } } @@ -4478,13 +4842,49 @@ } } }, + "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_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": "[ ]", + "limit_to_extruder": "support_roof_extruder_nr", + "enabled": "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": "[ ]", + "limit_to_extruder": "support_bottom_extruder_nr", + "enabled": "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": @@ -4496,7 +4896,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": @@ -4523,10 +4923,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, @@ -4578,11 +4978,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": 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": { @@ -4718,7 +5118,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" @@ -5220,18 +5620,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 }, @@ -5259,7 +5648,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 @@ -5272,7 +5661,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, @@ -5286,27 +5675,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", @@ -5323,6 +5697,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 @@ -5449,7 +5824,7 @@ "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 } @@ -5609,7 +5984,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", @@ -5854,10 +6229,10 @@ "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, + "default_value": 0.5, "minimum_value": "0.001", - "minimum_value_warning": "0.005", - "maximum_value_warning": "0.1", + "minimum_value_warning": "0.01", + "maximum_value_warning": "3", "settable_per_mesh": true }, "meshfix_maximum_travel_resolution": @@ -5866,14 +6241,26 @@ "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", + "default_value": 1.0, + "value": "min(meshfix_maximum_resolution * speed_travel / speed_print, 2 * line_width)", "minimum_value": "0.001", - "minimum_value_warning": "0.005", - "maximum_value_warning": "1", + "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 + }, "support_skip_some_zags": { "label": "Break Up Support In Chunks", @@ -6170,7 +6557,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", @@ -6340,7 +6727,7 @@ "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)", + "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, @@ -6372,7 +6759,7 @@ "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)", + "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,7 +6775,7 @@ "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)", + "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", @@ -6648,7 +7035,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, @@ -6658,7 +7045,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", @@ -6670,19 +7057,20 @@ }, "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.0001", "settable_per_extruder": false, "settable_per_meshgroup": false }, "adaptive_layer_height_threshold": { - "label": "Adaptive layers 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.", "type": "float", "enabled": "adaptive_layer_height_enabled", @@ -6953,44 +7341,293 @@ "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, + "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, + "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, + "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, + "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": "retraction_speed", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "wipe_retraction_prime_speed": + { + "label": "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": "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 When Retracted", + "description": "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.", + "type": "bool", + "default_value": true, + "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, + "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": 100, + "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 + }, + "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 adhestion 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": "First 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 adhestion 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..0c978cdb71 --- /dev/null +++ b/resources/definitions/felixpro2dual.def.json @@ -0,0 +1,73 @@ +{ + "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 }, + "speed_layer_0": { "default_value": 20}, + + "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 }, + "speed_travel": { "default_value": 200 }, + + "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/flsun_qq_s.def.json b/resources/definitions/flsun_qq_s.def.json new file mode 100644 index 0000000000..5a739e9ae1 --- /dev/null +++ b/resources/definitions/flsun_qq_s.def.json @@ -0,0 +1,78 @@ +{ + "id": "flsun_qq_s", + "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" + }, + "top_thickness": { + "default_value": 5 + }, + "bottom_layers": { + "default_value": 4 + }, + "gantry_height": { + "default_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..3d8823f438 --- /dev/null +++ b/resources/definitions/geeetech_a30.def.json @@ -0,0 +1,131 @@ +{ + "id": "geeetech_a30", + "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 + }, + "material_bed_temperature": { + "default_value": 60 + }, + "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 + }, + "retraction_retract_speed": { + "default_value": 25 + }, + "retraction_prime_speed": { + "default_value": 25 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "machine_head_polygon": { + "default_value": [ + [-75, 35], + [18, 35], + [18, -18], + [-75, -18] + ] + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-75, 35], + [18, 35], + [18, -18], + [-75, -18] + ] + }, + "gantry_height": { + "default_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..eb576f0e19 100644 --- a/resources/definitions/gmax15plus.def.json +++ b/resources/definitions/gmax15plus.def.json @@ -37,7 +37,7 @@ "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 }, diff --git a/resources/definitions/gmax15plus_dual.def.json b/resources/definitions/gmax15plus_dual.def.json index 0264ef5977..40a3dde303 100644 --- a/resources/definitions/gmax15plus_dual.def.json +++ b/resources/definitions/gmax15plus_dual.def.json @@ -35,7 +35,7 @@ "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 }, diff --git a/resources/definitions/grr_neo.def.json b/resources/definitions/grr_neo.def.json index 67d6a92023..b3a558825a 100644 --- a/resources/definitions/grr_neo.def.json +++ b/resources/definitions/grr_neo.def.json @@ -37,7 +37,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/hms434.def.json b/resources/definitions/hms434.def.json index e41ca71c97..9956462071 100644 --- a/resources/definitions/hms434.def.json +++ b/resources/definitions/hms434.def.json @@ -9,7 +9,6 @@ "file_formats": "text/x-gcode", "has_materials": true, - "has_machine_materials": false, "preferred_material": "generic_pla", "exclude_materials": [ "chromatik_pla", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "imade3d_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "tizyx_abs", "tizyx_pla", "tizyx_pla_bois", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla", "generic_cpe_175", "generic_nylon_175", "dsm_arnitel2045_175", "dsm_novamid1070_175", "generic_tpu_175", "generic_pc_175" ], @@ -43,18 +42,13 @@ "material_diameter": {"default_value": 1.75 }, "machine_heated_bed": {"default_value": true }, "machine_center_is_zero": {"default_value": false }, - "gantry_height": {"value": 35 }, + "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": true}, "material_bed_temp_wait": {"default_value": true }, - "prime_tower_enable": {"default_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 }, "machine_max_feedrate_z": {"default_value": 1200 }, "machine_start_gcode": {"default_value": "\n;Neither MaukCC nor any of MaukCC 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": "" }, @@ -65,7 +59,6 @@ "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)" }, @@ -91,7 +84,8 @@ "infill_before_walls": {"value": false}, "material_print_temperature_layer_0": {"value": "material_print_temperature + 5"}, - "material_initial_print_temperature": {"value": "material_print_temperature"}, + "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"}, @@ -112,7 +106,6 @@ "speed_travel": {"value": "100"}, "speed_travel_layer_0": {"value": "speed_travel"}, "speed_support_interface": {"value": "speed_topbottom"}, - "max_feedrate_z_override": {"value": 10}, "speed_slowdown_layers": {"value": 1}, "acceleration_print": {"value": 200}, "acceleration_travel": {"value": 200}, @@ -121,7 +114,7 @@ "retraction_hop_enabled": {"value": false}, "retraction_hop": {"value": 1}, - "retraction_combing": {"value": "off"}, + "retraction_combing": {"value": "'off'"}, "cool_fan_speed": {"value": 0}, "cool_fan_enabled": {"value": true}, @@ -142,7 +135,6 @@ "skirt_brim_minimal_length": {"value": 50}, "prime_tower_enable": {"value": false }, - "prime_tower_wall_thickness": {"resolve": 0.7 }, "prime_tower_size": {"value": 20.6 }, "prime_tower_position_x": {"value": 125 }, "prime_tower_position_y": {"value": 70 }, 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..72a9ec3edb 100644 --- a/resources/definitions/innovo_inventor.def.json +++ b/resources/definitions/innovo_inventor.def.json @@ -41,7 +41,7 @@ ] }, "gantry_height": { - "default_value": 82.3 + "value": "82.3" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/jgaurora_a1.def.json b/resources/definitions/jgaurora_a1.def.json index b9a921c311..3c9f9c61e9 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)" diff --git a/resources/definitions/jgaurora_a3s.def.json b/resources/definitions/jgaurora_a3s.def.json new file mode 100644 index 0000000000..bd8d0bd0e3 --- /dev/null +++ b/resources/definitions/jgaurora_a3s.def.json @@ -0,0 +1,93 @@ +{ + "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 + }, + "material_print_temperature": { + "default_value": 210 + }, + "material_bed_temperature": { + "default_value": 65 + }, + "layer_height_0": { + "default_value": 0.12 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 35 + }, + "speed_infill": { + "default_value": 40 + }, + "speed_wall": { + "default_value": 30 + }, + "speed_topbottom": { + "default_value": 20 + }, + "speed_travel": { + "default_value": 100 + }, + "speed_layer_0": { + "default_value": 12 + }, + "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..e02fca881b 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)" diff --git a/resources/definitions/jgaurora_jgmaker_magic.def.json b/resources/definitions/jgaurora_jgmaker_magic.def.json index 4036ec51bf..703305151a 100644 --- a/resources/definitions/jgaurora_jgmaker_magic.def.json +++ b/resources/definitions/jgaurora_jgmaker_magic.def.json @@ -39,7 +39,7 @@ "default_value": false }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/jgaurora_z_603s.def.json b/resources/definitions/jgaurora_z_603s.def.json index 3a78585240..cf92f2fc71 100644 --- a/resources/definitions/jgaurora_z_603s.def.json +++ b/resources/definitions/jgaurora_z_603s.def.json @@ -39,7 +39,7 @@ "default_value": false }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" 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/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 577a63581e..a81a40542b 100644 --- a/resources/definitions/kupido.def.json +++ b/resources/definitions/kupido.def.json @@ -29,7 +29,7 @@ "machine_height": { "default_value": 190 }, "machine_depth": { "default_value": 195 }, "machine_center_is_zero": { "default_value": false }, - "gantry_height": { "default_value": 55 }, + "gantry_height": { "value": "55" }, "retraction_amount": { "default_value": 1 }, "support_enable": { "default_value": true}, "machine_head_with_fans_polygon": { @@ -43,7 +43,7 @@ }, "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{travel_speed} ;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}" + "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/makeR_pegasus.def.json b/resources/definitions/makeR_pegasus.def.json index ac09aa01ac..6b19544612 100644 --- a/resources/definitions/makeR_pegasus.def.json +++ b/resources/definitions/makeR_pegasus.def.json @@ -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..c7e7f4079d 100644 --- a/resources/definitions/makeR_prusa_tairona_i3.def.json +++ b/resources/definitions/makeR_prusa_tairona_i3.def.json @@ -41,7 +41,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/makeit_pro_l.def.json b/resources/definitions/makeit_pro_l.def.json index d40d63f97b..5d09189de8 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 diff --git a/resources/definitions/makeit_pro_m.def.json b/resources/definitions/makeit_pro_m.def.json index 1f0381df86..57e2a7dbd4 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 diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json index be85e54967..560e53ccb9 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)" @@ -132,7 +132,7 @@ "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" diff --git a/resources/definitions/malyan_m180.def.json b/resources/definitions/malyan_m180.def.json index 53864dabae..cd3a068134 100644 --- a/resources/definitions/malyan_m180.def.json +++ b/resources/definitions/malyan_m180.def.json @@ -53,7 +53,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..71c94184b2 100644 --- a/resources/definitions/malyan_m200.def.json +++ b/resources/definitions/malyan_m200.def.json @@ -80,7 +80,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..104be7091b 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": { diff --git a/resources/definitions/mendel90.def.json b/resources/definitions/mendel90.def.json index 85d82ae176..39cb4de8d3 100644 --- a/resources/definitions/mendel90.def.json +++ b/resources/definitions/mendel90.def.json @@ -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_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..6463ac2ca4 --- /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_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..4309e07184 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_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/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..b8879e825c 100644 --- a/resources/definitions/printrbot_play.def.json +++ b/resources/definitions/printrbot_play.def.json @@ -27,7 +27,7 @@ "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}, 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..581de6fd98 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": @@ -48,7 +48,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..ff6f4469e7 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, @@ -31,7 +31,7 @@ "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_xl.def.json b/resources/definitions/prusa_i3_xl.def.json index 9931be5c72..b9628b9430 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": @@ -40,7 +40,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/raise3D_N2_dual.def.json b/resources/definitions/raise3D_N2_dual.def.json index f4600bc027..1994cc2bcb 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 diff --git a/resources/definitions/raise3D_N2_plus_dual.def.json b/resources/definitions/raise3D_N2_plus_dual.def.json index 010c8cfa73..23ad1fbd09 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 diff --git a/resources/definitions/raise3D_N2_plus_single.def.json b/resources/definitions/raise3D_N2_plus_single.def.json index dd2162f5a9..f8a1a7e0fb 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 diff --git a/resources/definitions/raise3D_N2_single.def.json b/resources/definitions/raise3D_N2_single.def.json index e549b97b3b..c69823466b 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 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_zero2.def.json b/resources/definitions/rigid3d_zero2.def.json index 09390ed8b5..f24c869636 100644 --- a/resources/definitions/rigid3d_zero2.def.json +++ b/resources/definitions/rigid3d_zero2.def.json @@ -81,7 +81,7 @@ "default_value": false }, "gantry_height": { - "default_value": 25 + "value": "25" }, "machine_gcode_flavor": { "default_value": "RepRap" diff --git a/resources/definitions/rigidbot.def.json b/resources/definitions/rigidbot.def.json index 5eb346c7ca..c04cd7c5e6 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)" diff --git a/resources/definitions/rigidbot_big.def.json b/resources/definitions/rigidbot_big.def.json index 581b6144a0..c97c6df9f3 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)" 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..a3710fb9af --- /dev/null +++ b/resources/definitions/strateo3d.def.json @@ -0,0 +1,137 @@ +{ + "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": "e", + "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_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": { "default_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 E-1 F1500 \nG0 z1 \nG90 \nG28 \nM801.2 \nM801.0 \nM84" }, + "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": 2000 }, + + "acceleration_enabled": { "value": false }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 1000 / 2000)" }, + "acceleration_print": { "value": "2000" }, + "acceleration_support": { "value": "acceleration_print" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 2000)" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1500 / 2000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1500)" }, + "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 index 2875b949be..a7f4b7e549 100644 --- a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json +++ b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json @@ -1,12 +1,11 @@ { "version": 2, - "name": "Discov3ry Complete (Ultimaker 2+)", + "name": "Discov3ry Complete", "inherits": "fdmprinter", "metadata": { "author": "Andrew Finkle, CTO", "manufacturer": "Structur3d.io", "visible": true, - "weight": 1, "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "platform_texture": "Ultimaker2Plusbackplate.png", @@ -15,9 +14,7 @@ "has_variants": true, "variants_name": "Print core", "preferred_variant_name": "0.84mm (Green)", - "has_machine_materials": true, "preferred_material": "structur3d_dap100silicone", - "has_variant_materials": false, "has_machine_quality": false, "preferred_quality_type": "extra_fast", "first_start_actions": [], @@ -77,7 +74,7 @@ "default_value": true }, "gantry_height": { - "default_value": 52 + "value": "52" }, "machine_nozzle_head_distance": { "default_value": 5 diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json index 0ed8d657a2..67a4bb8eab 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,8 +32,8 @@ "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 }, 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..038cc3a318 100644 --- a/resources/definitions/tevo_tarantula.def.json +++ b/resources/definitions/tevo_tarantula.def.json @@ -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 9110e4ba4d..67f25ec9d8 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,8 +25,8 @@ "machine_depth": { "default_value": 300 }, - "machine_center_is_zero": { - "default_value": false + "machine_center_is_zero": { + "default_value": false }, "machine_head_polygon": { "default_value": [ @@ -70,21 +70,39 @@ "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": { diff --git a/resources/definitions/tizyx_evy.def.json b/resources/definitions/tizyx_evy.def.json index a0bf5d76be..f92f679677 100644 --- a/resources/definitions/tizyx_evy.def.json +++ b/resources/definitions/tizyx_evy.def.json @@ -10,7 +10,6 @@ "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variants": true, "preferred_variant_name": "0.4mm", @@ -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 }, @@ -69,6 +68,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 index 2e5ed8b126..e06894139e 100644 --- a/resources/definitions/tizyx_evy_dual.def.json +++ b/resources/definitions/tizyx_evy_dual.def.json @@ -10,7 +10,6 @@ "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variants": true, "preferred_variant_name": "Classic Extruder", @@ -33,7 +32,7 @@ "machine_extruder_count": { "default_value": 2 }, "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 }, @@ -52,6 +51,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_k25.def.json b/resources/definitions/tizyx_k25.def.json index c076b214c7..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", "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": { "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..060752387b 100644 --- a/resources/definitions/ubuild-3d_mr_bot_280.def.json +++ b/resources/definitions/ubuild-3d_mr_bot_280.def.json @@ -34,7 +34,7 @@ "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/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 4cc291ff45..285f5bed08 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -14,7 +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": @@ -56,7 +55,7 @@ "default_value": false }, "gantry_height": { - "default_value": 48 + "value": "48" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 28fd2b71f9..65ee8f063b 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": @@ -50,7 +50,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 6e01390703..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,14 +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/releases/firmware/9066/stable/um-update.swu.version" + "https://software.ultimaker.com/releases/firmware/9066/stable/um-update.swu.version" ], "update_url": "https://ultimaker.com/firmware" - } + }, + "bom_numbers": [ + 9066 + ] }, @@ -61,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]], @@ -77,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, "default_value": 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" }, @@ -117,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..f7f3a038fe --- /dev/null +++ b/resources/definitions/ultimaker_s3.def.json @@ -0,0 +1,168 @@ +{ + "id": "ultimaker_s3", + "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_tower_position_x": { "default_value": 345 }, + "prime_tower_position_y": { "default_value": 222.5 }, + "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 3f24673e6d..fef8c87c27 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -14,7 +14,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 +29,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/um-update.swu.version"], + "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 +47,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,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_extruder_count": { "default_value": 2 }, "extruder_prime_pos_abs": { "default_value": true }, "machine_start_gcode": { "default_value": "" }, @@ -156,10 +160,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/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..6bba095978 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], @@ -58,7 +58,7 @@ ] }, "gantry_height": { - "default_value": 18 + "value": "18" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/vertex_k8400_dual.def.json b/resources/definitions/vertex_k8400_dual.def.json index c7706135bd..9d014b9cf8 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], @@ -59,7 +59,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..02697a1152 --- /dev/null +++ b/resources/definitions/vertex_nano_k8600.def.json @@ -0,0 +1,83 @@ +{ + "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 + }, + "material_bed_temperature": { + "default_value": 0 + }, + "material_bed_temperature_layer_0": { + "default_value": 0 + }, + "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/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..5aa015cace 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": 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/Mark2_extruder1.def.json b/resources/extruders/Mark2_extruder1.def.json new file mode 100644 index 0000000000..915c331083 --- /dev/null +++ b/resources/extruders/Mark2_extruder1.def.json @@ -0,0 +1,19 @@ +{ + "id": "Mark2_extruder1", + "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..2c05a09391 --- /dev/null +++ b/resources/extruders/Mark2_extruder2.def.json @@ -0,0 +1,19 @@ +{ + "id": "Mark2_extruder2", + "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/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..704d3a55ca 100644 --- a/resources/extruders/creality_cr10_extruder_0.def.json +++ b/resources/extruders/anet_a6_extruder_0.def.json @@ -1,10 +1,10 @@ { - "id": "creality_cr10_extruder_0", + "id": "anet_a6_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_cr10", + "machine": "anet_a6", "position": "0" }, diff --git a/resources/extruders/creality_cr10s4_extruder_0.def.json b/resources/extruders/creality_base_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_cr10s4_extruder_0.def.json rename to resources/extruders/creality_base_extruder_0.def.json index 8a40c6431f..a173d1c2fa 100644 --- a/resources/extruders/creality_cr10s4_extruder_0.def.json +++ b/resources/extruders/creality_base_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": "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/creality_cr10s5_extruder_0.def.json b/resources/extruders/erzay3d_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_cr10s5_extruder_0.def.json rename to resources/extruders/erzay3d_extruder_0.def.json index 98b701ae2e..65bf515263 100644 --- a/resources/extruders/creality_cr10s5_extruder_0.def.json +++ b/resources/extruders/erzay3d_extruder_0.def.json @@ -1,10 +1,10 @@ { - "id": "creality_cr10s5_extruder_0", + "id": "erzay3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_cr10s5", + "machine": "erzay3d", "position": "0" }, 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..90c41a83b5 --- /dev/null +++ b/resources/extruders/felixpro2_dual_extruder_0.def.json @@ -0,0 +1,28 @@ +{ + "id": "felixpro2_dual_extruder_0", + "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..3ff0d401fd --- /dev/null +++ b/resources/extruders/felixpro2_dual_extruder_1.def.json @@ -0,0 +1,28 @@ +{ + "id": "felixpro2_dual_extruder_1", + "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/creality_ender3_extruder_0.def.json b/resources/extruders/flsun_qq_s_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_ender3_extruder_0.def.json rename to resources/extruders/flsun_qq_s_extruder_0.def.json index 431366c777..cba424e182 100644 --- a/resources/extruders/creality_ender3_extruder_0.def.json +++ b/resources/extruders/flsun_qq_s_extruder_0.def.json @@ -1,10 +1,10 @@ { - "id": "creality_ender3_extruder_0", + "id": "flsun_qq_s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_ender3", + "machine": "flsun_qq_s", "position": "0" }, 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..bc1d6a6ed6 --- /dev/null +++ b/resources/extruders/geeetech_a30_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "geeetech_a30_extruder_0", + "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/imade3d_jellybox_2_extruder_0.def.json b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json new file mode 100644 index 0000000000..1d50297343 --- /dev/null +++ b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "imade3d_jellybox_2_extruder_0", + "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/jgaurora_a3s_extruder_0.def.json b/resources/extruders/jgaurora_a3s_extruder_0.def.json new file mode 100644 index 0000000000..430867b38b --- /dev/null +++ b/resources/extruders/jgaurora_a3s_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "jgaurora_a3s_extruder_0", + "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/nwa3d_a31_extruder_0.def.json b/resources/extruders/nwa3d_a31_extruder_0.def.json new file mode 100644 index 0000000000..999fe37d28 --- /dev/null +++ b/resources/extruders/nwa3d_a31_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "nwa3d_a31_extruder_0", + "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/stereotech_start_extruder_0.def.json b/resources/extruders/stereotech_start_extruder_0.def.json new file mode 100644 index 0000000000..8658944ebd --- /dev/null +++ b/resources/extruders/stereotech_start_extruder_0.def.json @@ -0,0 +1,16 @@ +{ + "id": "stereotech_start_extruder_0", + "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..ffbf5bde2f --- /dev/null +++ b/resources/extruders/stereotech_ste320_1st.def.json @@ -0,0 +1,46 @@ +{ + "id": "stereotech_ste320_1st", + "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..ae1b8f0f15 --- /dev/null +++ b/resources/extruders/stereotech_ste320_2nd.def.json @@ -0,0 +1,46 @@ +{ + "id": "stereotech_ste320_2nd", + "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..1df8eb0ebb --- /dev/null +++ b/resources/extruders/strateo3d_left_extruder.def.json @@ -0,0 +1,17 @@ +{ + "id": "strateo3d_left_extruder", + "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..ea59870329 --- /dev/null +++ b/resources/extruders/strateo3d_right_extruder.def.json @@ -0,0 +1,17 @@ +{ + "id": "strateo3d_right_extruder", + "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/ultimaker_s3_extruder_left.def.json b/resources/extruders/ultimaker_s3_extruder_left.def.json new file mode 100644 index 0000000000..61d3149e0b --- /dev/null +++ b/resources/extruders/ultimaker_s3_extruder_left.def.json @@ -0,0 +1,30 @@ +{ + "id": "ultimaker_s3_extruder_left", + "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..efcb6ae06a --- /dev/null +++ b/resources/extruders/ultimaker_s3_extruder_right.def.json @@ -0,0 +1,30 @@ +{ + "id": "ultimaker_s3_extruder_right", + "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": { "default_value": 180 }, + "extruder_prime_pos_y": { "default_value": 6 }, + "extruder_prime_pos_z": { "default_value": 2 } + } +} 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/i18n/cura.pot b/resources/i18n/cura.pot index 749fdb65ee..8acdb06149 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: 2019-02-26 16:36+0100\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -69,16 +69,6 @@ msgid "" "guide

" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Changelog" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -94,38 +84,37 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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 "" - #: /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" @@ -136,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "" +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 +msgctxt "X3G Writer File Description" +msgid "X3G File" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +142,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 "" @@ -206,10 +201,10 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "" @@ -238,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "" @@ -267,109 +262,109 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 -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:93 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:100 +msgctxt "@info:status" +msgid "Connected over the network. No access to control the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 msgctxt "@label" msgid "" "There is a mismatch between the configuration or calibration of the printer " @@ -377,57 +372,58 @@ msgid "" "that are inserted in your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, python-brace-format msgctxt "@info:status" msgid "No Printcore loaded in slot {slot_number}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, python-brace-format msgctxt "@info:status" msgid "No material loaded in slot {slot_number}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, python-brace-format msgctxt "@label" msgid "" @@ -435,23 +431,23 @@ msgid "" "{remote_printcore_name}) selected for extruder {extruder_id}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 msgctxt "@label" msgid "" "The PrintCores and/or materials on your printer differ from those within " @@ -459,87 +455,87 @@ msgid "" "and materials that are inserted in your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 msgctxt "@info:status" msgid "Print job was successfully sent to the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, python-brace-format msgctxt "@info:status" msgid "The print job '{job_name}' was finished." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "" @@ -554,50 +550,55 @@ msgctxt "@info:status" msgid "today" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" +msgid "Sending Print Job" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading via Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 msgctxt "@info:status" msgid "Send and monitor print jobs from anywhere using your Ultimaker account." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "" +"@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 msgctxt "@info:status" msgid "" "You can now send and monitor print jobs from anywhere using your Ultimaker " "account." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "" @@ -612,7 +613,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "" @@ -673,49 +674,11 @@ 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" msgstr "" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -741,24 +704,24 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "" @@ -766,7 +729,7 @@ msgid "" "errors: {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:388 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "" @@ -774,13 +737,13 @@ msgid "" "errors on one or more models: {error_labels}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:397 +#: /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:406 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "" @@ -788,7 +751,7 @@ msgid "" "%s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:415 +#: /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 or are " @@ -797,12 +760,12 @@ msgid "" 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 "" @@ -833,13 +796,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "" @@ -848,7 +811,7 @@ msgid "" "instead." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "" @@ -863,18 +826,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 msgctxt "@info:generic" msgid "" "Make sure the g-code is suitable for your printer and printer configuration " @@ -899,7 +862,7 @@ msgctxt "@info:backup_status" msgid "There was an error listing your backups." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:121 +#: /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 "" @@ -960,96 +923,35 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "" @@ -1057,43 +959,36 @@ msgid "" "overwrite it?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:915 -#, python-format -msgctxt "@info:generic" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +msgctxt "@info:message Followed by a list of settings." msgid "" -"Settings have been changed to match the current availability of extruders: " -"[%s]" +"Settings have been changed to match the current availability of extruders:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "" @@ -1101,44 +996,44 @@ msgid "" "failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, 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:145 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "" @@ -1146,7 +1041,7 @@ msgid "" "import it." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:243 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "" @@ -1154,60 +1049,145 @@ msgid "" "with your current machine ({2}), could not import it." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +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:109 @@ -1221,25 +1201,44 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "" @@ -1254,17 +1253,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "" +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1277,7 +1290,7 @@ msgstr "" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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 "" @@ -1288,19 +1301,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "" @@ -1430,30 +1443,32 @@ msgstr "" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, python-format msgctxt "" "@info 'width', 'depth' and 'height' are variable names that must NOT be " @@ -1461,230 +1476,166 @@ msgctxt "" msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:404 -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:428 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "" @@ -1694,7 +1645,7 @@ msgid "Install" msgstr "" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "" @@ -1711,15 +1662,15 @@ msgid "ratings" 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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "" @@ -1729,52 +1680,49 @@ msgctxt "@label" msgid "Your rating" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1852,7 +1800,7 @@ 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 "" @@ -1935,12 +1883,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "" @@ -1952,22 +1900,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -2051,16 +1983,17 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 msgctxt "@info" -msgid "" -"These options are not available because you are monitoring a cloud printer." +msgid "Please update your printer's firmware to manage the queue remotely." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 @@ -2068,22 +2001,22 @@ 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "" @@ -2093,37 +2026,31 @@ msgctxt "@label" msgid "Untitled" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2131,186 +2058,198 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" +msgid "Manage in browser" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 msgctxt "@label" -msgid "Print jobs" +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:116 msgctxt "@label" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 +msgctxt "@label" msgid "Total print time" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 msgctxt "@message:text" msgid "" "This printer/group is already added to Cura. Please select another printer/" "group." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" msgid "Enter the IP address or hostname of your printer on the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /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:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "" @@ -2414,7 +2353,7 @@ msgctxt "@action:button" msgid "Override" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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 "" @@ -2422,41 +2361,41 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "" @@ -2466,107 +2405,108 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." +msgid "Please connect your printer to the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "" @@ -2596,31 +2536,26 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" +msgid "Allow sending anonymous data" msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 @@ -2671,15 +2606,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 @@ -2687,6 +2617,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." @@ -2800,7 +2735,7 @@ msgid "Printer Group" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "" @@ -2813,19 +2748,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 msgctxt "@action:label" msgid "Not in profile" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2910,6 +2845,7 @@ 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 "" @@ -3002,22 +2938,23 @@ msgid "Previous" msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -3028,28 +2965,22 @@ msgctxt "@label" msgid "Checklist" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker 2." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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 " @@ -3057,7 +2988,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 " @@ -3065,121 +2996,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" @@ -3230,174 +3066,174 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "" @@ -3412,248 +3248,272 @@ 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:48 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:61 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:68 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:75 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:83 msgctxt "@title:column" msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "" +"Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@info:tooltip" msgid "" "When you have made changes to a profile and switched to a different one, a " @@ -3661,50 +3521,50 @@ 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 msgctxt "@info:tooltip" msgid "" "Should anonymous data about your print be sent to Ultimaker? Note, no " @@ -3712,132 +3572,134 @@ msgid "" "stored." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 msgctxt "@label" msgid "Create" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:105 msgctxt "@label" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:181 msgctxt "@title:window" msgid "Create Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "" @@ -3880,12 +3742,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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 " @@ -3902,33 +3764,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "" @@ -3942,29 +3804,36 @@ msgid "" "Click to make these settings visible." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3972,7 +3841,7 @@ msgid "" "Click to restore the value of the profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value " @@ -3981,12 +3850,12 @@ msgid "" "Click to restore the calculated value." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "" @@ -4002,32 +3871,24 @@ msgid "" "Gradual infill will gradually increase the amount of infill towards the top." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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 " @@ -4050,7 +3911,7 @@ 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" +"configuration. Please change these to enable this quality profile." msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 @@ -4084,9 +3945,9 @@ msgid "" "Click to open the profile manager." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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." +msgid "Print setup disabled. G-code file can not be modified." msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 @@ -4119,7 +3980,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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 " @@ -4228,11 +4089,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4248,32 +4104,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "" @@ -4283,7 +4139,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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 "" @@ -4347,12 +4218,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "" @@ -4378,17 +4244,17 @@ msgctxt "@label" msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "" @@ -4410,42 +4276,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" +msgid "View type" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " +msgid "Object list" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "" @@ -4455,11 +4326,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4470,7 +4336,7 @@ 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" +"- Get exclusive access to print profiles from leading brands" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 @@ -4483,49 +4349,54 @@ msgctxt "@label" msgid "No time estimation available" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 msgctxt "@button" msgid "Preview" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" +msgid "Time estimation" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" +msgid "Material estimation" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 @@ -4548,275 +4419,285 @@ msgctxt "@label" msgid "Preset printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /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:168 +#: /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:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 msgctxt "@text:window" msgid "" "We have found one or more G-Code files within the files you have selected. " @@ -4824,12 +4705,16 @@ msgid "" "file, please just select only one." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4889,36 +4774,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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 "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -5079,27 +4934,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "" @@ -5131,28 +4991,757 @@ msgctxt "@action:button" msgid "Import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" msgstr "" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "" + +#: /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/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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 "" + +#: MachineSettingsAction/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)." +msgid "" +"Provides a way to change machine settings (such as build volume, nozzle " +"size, etc.)." msgstr "" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" +msgid "Machine Settings action" msgstr "" +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "" + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "" + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "" + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "" + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "" +"Checks models and print configuration for possible printing issues and give " +"suggestions." +msgstr "" + +#: ModelChecker/plugin.json +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 "" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "" + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "" + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "" + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "" +"Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "" + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "" + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "" + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers." +msgstr "" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "" + +#: SettingsGuide/plugin.json +msgctxt "description" +msgid "" +"Provides extra information and explanations about settings in Cura, with " +"images and animations." +msgstr "" + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "" + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "" +"Creates an eraser mesh to block the printing of support in certain places" +msgstr "" + +#: SupportEraser/plugin.json +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." +msgstr "" + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "" + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "" + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "" + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "" + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "" + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "" + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "" + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "" + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "" + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "" + +#: GCodeReader/plugin.json +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." +msgstr "" + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "" +"Allows material manufacturers to create new material and quality profiles " +"using a drop-in UI." +msgstr "" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "" + +#: 3MFWriter/plugin.json +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.)." +msgstr "" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "" + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "" diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 816f778f63..48c0d976b5 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -5,20 +5,20 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: German\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Geräteeinstellungen" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D-Modell-Assistent" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,17 +64,11 @@ 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 "Changelog" -msgstr "Änderungsprotokoll" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -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" @@ -91,37 +85,36 @@ 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:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF-Datei" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-Drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Über USB verbunden" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -132,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "X3g-Datei" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -144,6 +142,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" @@ -202,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Fehler" @@ -234,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Warnhinweis" @@ -263,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Wechseldatenträger" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drucken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Drücken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Über Netzwerk verbunden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Authentifizierungsstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Authentifizierungsstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Erneut versuchen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Zugriffanforderung erneut senden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Zugriff auf den Drucker genehmigt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Zugriff anfordern" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Konfiguration nicht übereinstimmend" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Daten werden zum Drucker gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Daten werden gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronisieren Ihres Druckers" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Über Netzwerk verbunden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Daten gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "In Monitor überwachen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Druck vollendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Leer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Unbekannt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Über Cloud drucken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Über Cloud drucken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Über Cloud verbunden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Cloudfehler" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Druckauftrag konnte nicht exportiert werden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Daten konnten nicht in Drucker geladen werden." @@ -537,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "heute" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Es liegt ein Fehler beim Verbinden mit der Cloud vor." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Druckauftrag senden" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Daten werden zu Remote-Cluster gesendet" +msgid "Uploading via Ultimaker Cloud" +msgstr "Über Ultimaker Cloud hochladen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Verbinden mit Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." -msgstr "Nicht mehr für diesen Drucker nachfragen" +msgstr "Nicht mehr für diesen Drucker nachfragen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Erste Schritte" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Verbunden!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Ihre Verbindung überprüfen" @@ -593,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Überwachen" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Zugriff auf Update-Informationen nicht möglich." @@ -650,46 +654,11 @@ 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" msgstr "Cura 15.04-Profile" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Bewertung" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -715,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-Bilddatei" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -795,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Düse" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Projektdatei öffnen" @@ -822,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "G-Code-Details" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -856,7 +825,7 @@ 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:121 +#: /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." @@ -917,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Vorschau" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Außenwand" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Innenwände" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Außenhaut" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Füllung" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Stützstruktur-Füllung" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Stützstruktur-Schnittstelle" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Stützstruktur" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Bewegungen" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Einzüge" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Sonstige" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Vorgeschnittene Datei {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Nicht unterstützt" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Ungültige Datei-URL:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Nicht überschrieben" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Einstellungen aktualisiert" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extruder deaktiviert" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format 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:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil erfolgreich importiert {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Benutzerdefiniertes Profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Vorgeschnittene Datei {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Weiter" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /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/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Nicht überschrieben" #: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 #, python-brace-format @@ -1166,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Alle Dateien (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Unbekannt" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Benutzerdefiniertes Material" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Benutzerdefiniert" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Produktabmessungen" @@ -1197,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1219,7 +1239,7 @@ msgstr "Objekte platzieren" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1230,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Kann Position nicht finden" @@ -1260,7 +1280,12 @@ 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:98 msgctxt "@action:button" @@ -1293,7 +1318,10 @@ 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:173 msgctxt "@title:groupbox" @@ -1365,242 +1393,195 @@ msgstr "Protokolle" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Bericht senden" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Geräte werden geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Die Szene wird eingerichtet..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Die Benutzeroberfläche wird geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Geräteeinstellungen" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Drucker" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Druckereinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Breite)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Tiefe)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Höhe)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Druckbettform" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Ausgang in Mitte" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Heizbares Bett" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "G-Code-Variante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Druckkopfeinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Brückenhöhe" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Anzahl Extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" -msgstr "Start G-code" +msgstr "Start G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" -msgstr "Ende G-code" +msgstr "Ende G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /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:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "G-Code Extruder-Ende" @@ -1610,7 +1591,7 @@ msgid "Install" msgstr "Installieren" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installiert" @@ -1626,15 +1607,15 @@ msgid "ratings" msgstr "Bewertungen" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plugins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materialien" @@ -1644,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Ihre Bewertung" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Unbekannt" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1765,7 +1743,7 @@ 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" @@ -1801,7 +1779,10 @@ 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:55 msgctxt "@action:button" @@ -1848,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Pakete werden abgeholt..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-Mail" @@ -1863,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Schließen" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1954,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Lädt..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Nicht verfügbar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Nicht erreichbar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Leerlauf" @@ -1995,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Unbenannt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anonym" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Erfordert Konfigurationsänderungen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Details" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Drucker nicht verfügbar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Zuerst verfügbar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Glas" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2033,178 +1994,190 @@ msgstr "In Warteschlange" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Gehe zu Cura Connect" +msgid "Manage in browser" +msgstr "Im Browser verwalten" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Druckaufträge" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Druckdauer insgesamt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Warten auf" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Druckauftragshistorie anzeigen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Vorhandene Verbindung" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Anschluss an vernetzten Drucker" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Hinzufügen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Bearbeiten" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Entfernen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Aktualisieren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Ungültige IP-Adresse" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Druckeradresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Wird abgebrochen..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Wird pausiert..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Fertigstellung %1 auf %2" @@ -2308,44 +2281,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Überschreiben" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminium" @@ -2355,107 +2328,109 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Mit einem Drucker verbinden" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Anleitung für Cura-Einstellungen" + +#: /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." -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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 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." +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:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Verbinden Sie Ihren Ultimaker-Drucker bitte mit Ihrem lokalen Netzwerk." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materialfarbe" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linientyp" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Vorschub" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Schichtdicke" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Kompatibilitätsmodus" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Bewegungen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Helfer" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Gehäuse" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Füllung" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Oben/Unten" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Innenwand" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2485,30 +2460,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "Ich erlaube das Senden der Daten an Ultimaker, um Cura zu verbessern" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Kein Druck ausgewählt" +msgid "Allow sending anonymous data" +msgstr "Senden von anonymen Daten erlauben" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2557,19 +2527,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." @@ -2683,7 +2653,7 @@ msgid "Printer Group" msgstr "Druckergruppe" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Profileinstellungen" @@ -2696,19 +2666,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Name" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2789,6 +2759,7 @@ 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" @@ -2879,22 +2850,23 @@ msgid "Previous" msgstr "Zurück" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Export" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Weiter" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Tipp" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Generisch" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2905,150 +2877,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Checkliste" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Drucker-Upgrades wählen" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson-Block" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3099,170 +2972,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "Haftungsinformationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Import" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material erfolgreich nach %1 exportiert" @@ -3277,412 +3150,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Schnittstelle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Sprache:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Währung:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 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:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch schneiden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Viewport-Verhalten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Überhang anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "In Mausrichtung zoomen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Kamera-Rendering: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Ansicht" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Orthogonal" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Dateien öffnen und speichern" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Große Modelle anpassen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extrem kleine Modelle skalieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 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:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Stets nachfragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Immer als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Modelle immer importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Geänderte Einstellungen immer verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Privatsphäre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bei Start nach Updates suchen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonyme) Druckinformationen senden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Mehr Informationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Experimentell" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "Mehrfach-Druckplattenfunktion verwenden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Umbenennen" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Profil erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profil duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profil umbenennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Profil importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Profil exportieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Drucker: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Standardprofile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Benutzerdefinierte Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Aktuelle Änderungen verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Globale Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Marktplatz" @@ -3725,12 +3623,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Hilfe" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3745,33 +3643,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "Einstellungen durchsuchen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Diese Einstellung weiterhin anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Sichtbarkeit einstellen wird konfiguriert..." @@ -3782,50 +3680,64 @@ 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:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 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:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 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/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Benutzerdefiniert" @@ -3840,27 +3752,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3877,7 +3784,7 @@ msgstr "Sie haben einige Profileinstellungen geändert. Wenn Sie diese ändern m #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 msgctxt "@tooltip" -msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 @@ -3906,12 +3813,15 @@ 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." +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/PrintSetupSelector.qml:19 +#: /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 kann nicht geändert werden." +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" @@ -3943,7 +3853,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "G-Code senden" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4040,11 +3950,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoriten" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Generisch" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4060,32 +3965,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Dr&ucker" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Als aktiven Extruder festlegen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Extruder aktivieren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Extruder deaktivieren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "&Druckplatte" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Profil" @@ -4095,7 +4000,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Kameraposition" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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" @@ -4159,12 +4079,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Konfiguration wählen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Siehe Materialkompatibilitätstabelle" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Konfigurationen" @@ -4189,17 +4104,17 @@ msgctxt "@label" msgid "Printer" msgstr "Drucker" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Für diese Materialkombination Kleber für eine bessere Haftung verwenden." @@ -4219,42 +4134,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "&Zuletzt geöffnet" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Druckzeit" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Typen anzeigen" +msgid "View type" +msgstr "Typ anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Hallo " +msgid "Object list" +msgstr "Objektliste" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Abmelden" @@ -4264,11 +4184,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Anmelden" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4279,8 +4194,11 @@ 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" +"- 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" @@ -4292,50 +4210,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Keine Zeitschätzung verfügbar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "Slicing nicht möglich" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Zeitangabe" +msgid "Time estimation" +msgstr "Zeitschätzung" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Materialangabe" +msgid "Material estimation" +msgstr "Materialschätzung" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4357,285 +4280,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Voreingestellte Drucker" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Marktplatz" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura wird geschlossen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Paket installieren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Datei(en) öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Drucker hinzufügen" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4653,7 +4590,9 @@ 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?" +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" @@ -4695,34 +4634,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Neues Profil erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Fügen Sie einen Drucker zu Cura hinzu" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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\nWenn 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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Hersteller" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Druckername" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Drucker hinzufügen" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4743,7 +4654,9 @@ 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:" +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:134 msgctxt "@label" @@ -4880,27 +4793,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Projekt speichern" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Druckplatte" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & Material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Speichern" @@ -4930,30 +4848,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Modelle importieren" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Nur aktuelle Druckplatte anzeigen" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Leer" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "An allen Druckplatten ausrichten" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Einen Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "An aktueller Druckplatte ausrichten" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Einen vernetzten Drucker hinzufügen" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Einen unvernetzten Drucker hinzufügen" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Hinzufügen" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Druckername" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Beschreibt die Durchführung der Geräteeinstellung (z. B. Druckabmessung, Düsengröße usw.)" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3G-Writer" +msgid "Machine Settings action" +msgstr "Beschreibung Geräteeinstellungen" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Neue Cura Pakete finden, verwalten und installieren." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Toolbox" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Stellt die Röntgen-Ansicht bereit." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Röntgen-Ansicht" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Bietet Unterstützung für das Lesen von X3D-Dateien." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D-Reader" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Schreibt G-Code in eine Datei." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "G-Code-Writer" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Überprüft Modelle und Druckkonfiguration auf mögliche Probleme und erteilt Empfehlungen." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Ermöglicht Gerätemaßnahmen für die Aktualisierung der Firmware." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Firmware-Aktualisierungsfunktion" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Erstellt eine geglättete Qualität, verändert das Profil." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Profilglättfunktion" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Ermöglicht das Lesen von AMF-Dateien." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "AMF-Reader" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Akzeptiert den G-Code und sendet diesen an einen Drucker. Das Plugin kann auch die Firmware aktualisieren." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB-Drucken" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "G-Code wird in ein komprimiertes Archiv geschrieben." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Writer für komprimierten G-Code" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Bietet Unterstützung für das Schreiben von Ultimaker Format Packages." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "UFP-Writer" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Bietet eine Vorbereitungsstufe in Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Vorbereitungsstufe" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Ermöglicht Hotplugging des Wechseldatenträgers und Beschreiben." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3-Netzwerkverbindung" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Anleitung für Einstellungen" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Bietet eine Überwachungsstufe in Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Überwachungsstufe" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Nach Firmware-Updates suchen." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Firmware-Update-Prüfer" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Ermöglicht die Simulationsansicht." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Simulationsansicht" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Liest G-Code-Format aus einem komprimierten Archiv." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Reader für komprimierten G-Code" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Erweiterung, die eine Nachbearbeitung von Skripten ermöglicht, die von Benutzern erstellt wurden" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Nachbearbeitung" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Erstellt ein Radierernetz, um den Druck von Stützstrukturen in bestimmten Positionen zu blockieren" + +#: SupportEraser/plugin.json +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." +msgstr "Sendet anonymisierte Slice-Informationen. Kann in den Einstellungen deaktiviert werden." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Slice-Informationen" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Bietet Möglichkeiten, um XML-basierte Materialprofile zu lesen und zu schreiben." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Materialprofile" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Bietet Unterstützung für den Import von Profilen der Vorgängerversionen von Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Cura-Vorgängerprofil-Reader" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Ermöglicht das Importieren von Profilen aus G-Code-Dateien." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "G-Code-Profil-Reader" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Aktualisiert Konfigurationen von Cura 3.2 auf Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Upgrade von Version 3.2 auf 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Aktualisiert Konfigurationen von Cura 3.3 auf Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Upgrade von Version 3.3 auf 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Aktualisiert Konfigurationen von Cura 2.5 auf Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Upgrade von Version 2.5 auf 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Aktualisiert Konfigurationen von Cura 2.7 auf Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Aktualisiert Konfigurationen von Cura 3.4 auf Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Aktualisiert Konfigurationen von Cura 3.0 auf Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Aktualisiert Konfigurationen von Cura 2.6 auf Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Upgrade von Version 2.6 auf 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Aktualisiert Konfigurationen von Cura 2.1 auf Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Upgrade von Version 2.1 auf 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Aktualisiert Konfigurationen von Cura 2.2 auf Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Upgrade von Version 2.2 auf 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Ermöglicht Erstellung von druckbarer Geometrie aus einer 2D-Bilddatei." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Bild-Reader" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Stellt die Verbindung zum Slicing-Backend der CuraEngine her." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine Backend" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Ermöglicht die Einstellungen pro Objekt." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Werkzeug „Einstellungen pro Objekt“" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Ermöglicht das Lesen von 3MF-Dateien." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF-Reader" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Bietet eine normale, solide Netzansicht." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Solide Ansicht" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Ermöglicht das Laden und Anzeigen von G-Code-Dateien." + +#: GCodeReader/plugin.json +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." +msgstr "Ermöglicht das Exportieren von Cura-Profilen." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura-Profil-Writer" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Druckprofil-Assistent" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Bietet Unterstützung für das Schreiben von 3MF-Dateien." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Ermöglicht Maschinenabläufe für Ultimaker-Maschinen (z. B. Assistent für Bettnivellierung, Auswahl von Upgrades usw.)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker-Maschinenabläufe" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Ermöglicht das Importieren von Cura-Profilen." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura-Profil-Reader" + +#~ 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" @@ -5151,7 +6108,6 @@ msgstr "X3G-Writer" #~ "Print Setup disabled\n" #~ "G-code files cannot be modified" #~ msgstr "" - #~ "Druckeinrichtung deaktiviert\n" #~ "G-Code-Dateien können nicht geändert werden" @@ -5295,62 +6251,6 @@ msgstr "X3G-Writer" #~ 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 "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Beschreibt die Durchführung der Geräteeinstellung (z. B. Druckabmessung, Düsengröße usw.)" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Beschreibung Geräteeinstellungen" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Neue Cura Pakete finden, verwalten und installieren." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Toolbox" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Stellt die Röntgen-Ansicht bereit." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Röntgen-Ansicht" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Bietet Unterstützung für das Lesen von X3D-Dateien." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3D-Reader" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Schreibt G-Code in eine Datei." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "G-Code-Writer" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Überprüft Modelle und Druckkonfiguration auf mögliche Probleme und erteilt Empfehlungen." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Modell-Prüfer" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Zeigt die Änderungen seit der letzten geprüften Version an." @@ -5359,14 +6259,6 @@ msgstr "X3G-Writer" #~ msgid "Changelog" #~ msgstr "Änderungsprotokoll" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Ermöglicht Gerätemaßnahmen für die Aktualisierung der Firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Firmware-Aktualisierungsfunktion" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Erstellt eine geglättete Qualität, verändert das Profil." @@ -5375,14 +6267,6 @@ msgstr "X3G-Writer" #~ msgid "Profile flatener" #~ msgstr "Profilglättfunktion" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Akzeptiert den G-Code und sendet diesen an einen Drucker. Das Plugin kann auch die Firmware aktualisieren." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USB-Drucken" - #~ msgctxt "description" #~ msgid "Ask the user once if he/she agrees with our license." #~ msgstr "Den Benutzer einmalig fragen, ob er unsere Lizenz akzeptiert." @@ -5391,278 +6275,6 @@ msgstr "X3G-Writer" #~ msgid "UserAgreement" #~ msgstr "UserAgreement" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "G-Code wird in ein komprimiertes Archiv geschrieben." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Writer für komprimierten G-Code" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Bietet Unterstützung für das Schreiben von Ultimaker Format Packages." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "UFP-Writer" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Bietet eine Vorbereitungsstufe in Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Vorbereitungsstufe" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Ermöglicht Hotplugging des Wechseldatenträgers und Beschreiben." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Ausgabegerät-Plugin für Wechseldatenträger" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Bietet eine Überwachungsstufe in Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Überwachungsstufe" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Nach Firmware-Updates suchen." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Firmware-Update-Prüfer" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Ermöglicht die Simulationsansicht." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Simulationsansicht" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Liest G-Code-Format aus einem komprimierten Archiv." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Reader für komprimierten G-Code" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Erweiterung, die eine Nachbearbeitung von Skripten ermöglicht, die von Benutzern erstellt wurden" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Nachbearbeitung" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Erstellt ein Radierernetz, um den Druck von Stützstrukturen in bestimmten Positionen zu blockieren" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Stützstruktur-Radierer" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Sendet anonymisierte Slice-Informationen. Kann in den Einstellungen deaktiviert werden." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Slice-Informationen" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Bietet Möglichkeiten, um XML-basierte Materialprofile zu lesen und zu schreiben." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Materialprofile" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Bietet Unterstützung für den Import von Profilen der Vorgängerversionen von Cura." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Cura-Vorgängerprofil-Reader" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Ermöglicht das Importieren von Profilen aus G-Code-Dateien." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "G-Code-Profil-Reader" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Aktualisiert Konfigurationen von Cura 3.2 auf Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Upgrade von Version 3.2 auf 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Aktualisiert Konfigurationen von Cura 3.3 auf Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Upgrade von Version 3.3 auf 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Aktualisiert Konfigurationen von Cura 2.5 auf Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Upgrade von Version 2.5 auf 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Aktualisiert Konfigurationen von Cura 2.7 auf Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Upgrade von Version 2.7 auf 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Aktualisiert Konfigurationen von Cura 3.4 auf Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Upgrade von Version 3.4 auf 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Aktualisiert Konfigurationen von Cura 3.0 auf Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Upgrade von Version 3.0 auf 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Aktualisiert Konfigurationen von Cura 2.6 auf Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Upgrade von Version 2.6 auf 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Aktualisiert Konfigurationen von Cura 2.1 auf Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Upgrade von Version 2.1 auf 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Aktualisiert Konfigurationen von Cura 2.2 auf Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Upgrade von Version 2.2 auf 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Ermöglicht Erstellung von druckbarer Geometrie aus einer 2D-Bilddatei." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Bild-Reader" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Stellt die Verbindung zum Slicing-Backend der CuraEngine her." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "CuraEngine Backend" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Ermöglicht die Einstellungen pro Objekt." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Werkzeug „Einstellungen pro Objekt“" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Ermöglicht das Lesen von 3MF-Dateien." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MF-Reader" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Bietet eine normale, solide Netzansicht." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Solide Ansicht" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Ermöglicht das Laden und Anzeigen von G-Code-Dateien." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "G-Code-Reader" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Ermöglicht das Exportieren von Cura-Profilen." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura-Profil-Writer" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Bietet Unterstützung für das Schreiben von 3MF-Dateien." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF-Writer" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Ermöglicht Maschinenabläufe für Ultimaker-Maschinen (z. B. Assistent für Bettnivellierung, Auswahl von Upgrades usw.)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ultimaker-Maschinenabläufe" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Ermöglicht das Importieren von Cura-Profilen." - -#~ 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." @@ -5703,14 +6315,6 @@ msgstr "X3G-Writer" #~ 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" @@ -5756,7 +6360,6 @@ msgstr "X3G-Writer" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "Exportieren in \"{}\" Qualität nicht möglich!\n" #~ "Zurückgeschaltet auf \"{}\"." @@ -5933,7 +6536,6 @@ msgstr "X3G-Writer" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "Einige Modelle können aufgrund der Objektgröße und des gewählten Materials für Modelle möglicherweise nicht optimal gedruckt werden: {model_names}.\n" #~ "Tipps, die für eine bessere Druckqualität hilfreich sein können:\n" #~ "1) Verwenden Sie abgerundete Ecken.\n" @@ -5950,7 +6552,6 @@ msgstr "X3G-Writer" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "Keine Modelle in Ihrer Zeichnung gefunden. Bitte überprüfen Sie den Inhalt erneut und stellen Sie sicher, dass ein Teil oder eine Baugruppe enthalten ist.\n" #~ "\n" #~ "Danke!" @@ -5961,7 +6562,6 @@ msgstr "X3G-Writer" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Es wurde mehr als ein Teil oder eine Baugruppe in Ihrer Zeichnung gefunden. Wir unterstützen derzeit nur Zeichnungen mit exakt einem Teil oder einer Baugruppe.\n" #~ "\n" #~ "Es tut uns leid!" @@ -5986,7 +6586,6 @@ msgstr "X3G-Writer" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Sehr geehrter Kunde,\n" #~ "wir konnten keine gültige Installation von SolidWorks auf Ihrem System finden. Das bedeutet, dass SolidWorks entweder nicht installiert ist oder sie keine gültige Lizenz besitzen. Stellen Sie bitte sicher, dass SolidWorks problemlos läuft und/oder wenden Sie sich an Ihre ICT-Abteilung.\n" #~ "\n" @@ -6001,7 +6600,6 @@ msgstr "X3G-Writer" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Sehr geehrter Kunde,\n" #~ "Sie verwenden dieses Plugin derzeit auf einem anderen Betriebssystem als Windows. Dieses Plugin funktioniert nur auf Windows mit installiertem SolidWorks und einer gültigen Lizenz. Installieren Sie dieses Plugin bitte auf einem Windows-Rechner mit installiertem SolidWorks.\n" #~ "\n" @@ -6106,7 +6704,6 @@ msgstr "X3G-Writer" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Verzeichnis\n" #~ "mit Makro und Symbol öffnen" @@ -6405,7 +7002,6 @@ msgstr "X3G-Writer" #~ "\n" #~ " Thanks!." #~ msgstr "" - #~ "Keine Modelle in Ihrer Zeichnung gefunden. Bitte überprüfen Sie den Inhalt erneut und stellen Sie sicher, dass ein Teil oder eine Baugruppe enthalten ist.\n" #~ "\n" #~ " Danke!" @@ -6416,7 +7012,6 @@ msgstr "X3G-Writer" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Es wurde mehr als ein Teil oder eine Baugruppe in Ihrer Zeichnung gefunden. Wir unterstützen derzeit nur Zeichnungen mit exakt einem Teil oder einer Baugruppe.\n" #~ "\n" #~ "Es tut uns leid!" @@ -6451,7 +7046,6 @@ msgstr "X3G-Writer" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Ein schwerer Fehler ist 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" #~ " " @@ -6618,7 +7212,6 @@ msgstr "X3G-Writer" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Ein schwerer Ausnahmefehler ist 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" #~ " " @@ -6765,7 +7358,6 @@ msgstr "X3G-Writer" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Ein schwerer Ausnahmezustand ist aufgetreten, den wir nicht beseitigen konnten!

\n" #~ "

Bitte senden Sie einen Fehlerbericht an folgende URL http://github.com/Ultimaker/Cura/issues

\n" #~ " " @@ -6808,7 +7400,6 @@ msgstr "X3G-Writer" #~ "You need to accept this license to install this plugin.\n" #~ "Do you agree with the terms below?" #~ msgstr "" - #~ " Das Plugin enthält eine Lizenz.\n" #~ "Sie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\n" #~ "Stimmen Sie den nachfolgenden Bedingungen zu?" @@ -7336,7 +7927,6 @@ msgstr "X3G-Writer" #~ msgid "Print Selected Model with %1" #~ msgid_plural "Print Selected Models With %1" #~ msgstr[0] "Ausgewähltes Modell drucken mit %1" - #~ msgstr[1] "Ausgewählte Modelle drucken mit %1" #~ msgctxt "@info:status" @@ -7366,7 +7956,6 @@ msgstr "X3G-Writer" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Ein schwerer Ausnahmezustand ist aufgetreten, den wir nicht beseitigen konnten!

\n" #~ "

Wir hoffen, dass dieses Bild eines Kätzchens Ihren Schock etwas abschwächt.

\n" #~ "

Verwenden Sie bitte die nachstehenden Informationen, um einen Fehlerbericht an folgende URL zu senden: http://github.com/Ultimaker/Cura/issues

\n" diff --git a/resources/i18n/de_DE/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po index bb77e47fec..3df5bac5ef 100644 --- a/resources/i18n/de_DE/fdmextruder.def.json.po +++ b/resources/i18n/de_DE/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: German\n" diff --git a/resources/i18n/de_DE/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po index cc2ed06ac5..99d81c92f2 100644 --- a/resources/i18n/de_DE/fdmprinter.def.json.po +++ b/resources/i18n/de_DE/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: German\n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -233,7 +237,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 +247,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 +257,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 +267,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 +277,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 +307,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 +317,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 +337,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 +402,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 +422,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 +432,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 +442,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 +472,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 @@ -1293,8 +1297,12 @@ 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 +1324,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 +1341,15 @@ 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" @@ -1631,7 +1646,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" @@ -1863,6 +1880,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 +2000,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 +2090,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,8 +2327,9 @@ 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." -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." +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 msgctxt "material_standby_temperature label" @@ -2153,6 +2381,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 +2582,15 @@ 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" @@ -2923,6 +3162,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 +3442,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,12 +3508,12 @@ 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" +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." @@ -3390,8 +3644,9 @@ 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" @@ -3769,13 +4024,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 @@ -3898,7 +4153,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" @@ -4270,16 +4527,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" @@ -4320,16 +4567,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" @@ -4340,6 +4577,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" @@ -4622,8 +4869,9 @@ 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" @@ -4855,6 +5103,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5112,8 +5370,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" @@ -5345,7 +5603,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" @@ -5454,7 +5714,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 @@ -5464,7 +5724,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 @@ -5474,7 +5734,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 @@ -5484,7 +5744,7 @@ 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" +msgid "Adaptive Layers Threshold" msgstr "Schwellenwert Anpassschichten" #: fdmprinter.def.json @@ -5702,6 +5962,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5762,6 +6172,138 @@ 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 "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." @@ -5899,7 +6441,6 @@ msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angew #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "Gcode-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n" #~ "." @@ -5912,7 +6453,6 @@ msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angew #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "Gcode-Befehle, die Am Ende ausgeführt werden sollen – getrennt durch \n" #~ "." @@ -5969,7 +6509,6 @@ msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angew #~ "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.\n" #~ "Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden Skirt-Linien in äußerer Richtung angebracht." diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index 7a08130af6..834396b94c 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -5,20 +5,20 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Spanish\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes de la máquina" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Asistente del modelo 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,17 +64,11 @@ 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 "Changelog" -msgstr "Registro de cambios" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -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" @@ -91,37 +85,36 @@ 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:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Archivo AMF" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impresión USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -132,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "Archivo X3g" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -144,6 +142,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" @@ -202,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Error" @@ -234,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Advertencia" @@ -263,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidad extraíble" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprime a través de la red" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 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:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Estado de la autenticación" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Estado de la autenticación" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Volver a intentar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 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:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Acceso a la impresora aceptado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Solicitar acceso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuración desajustada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando datos a la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Enviando datos" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar con la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 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:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Fecha de envío" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Ver en pantalla" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Impresión terminada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Vacío" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Desconocido" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Imprimir mediante Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Imprimir mediante Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Conectado mediante Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Error de Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "No se ha podido exportar el trabajo de impresión." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "No se han podido cargar los datos en la impresora." @@ -537,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "hoy" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Se ha producido un error al conectarse a la nube." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Enviando trabajo de impresión" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Enviando datos al clúster remoto" +msgid "Uploading via Ultimaker Cloud" +msgstr "Cargando a través de Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Conectar a Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "No volver a preguntarme para esta impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Empezar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "¡Conectado!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Revise su conexión" @@ -593,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Supervisar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "No se pudo acceder a la información actualizada." @@ -650,46 +654,11 @@ 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" msgstr "Perfiles de Cura 15.04" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Evaluación" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -715,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagen GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -795,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Tobera" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir archivo de proyecto" @@ -822,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Datos de GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -856,7 +825,7 @@ 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:121 +#: /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." @@ -917,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Vista previa" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Pared exterior" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes interiores" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Forro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Relleno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Relleno de soporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interfaz de soporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Soporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Falda" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Desplazamiento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retracciones" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Otro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Archivo {0} presegmentado" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "No compatible" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL del archivo no válida:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "No reemplazado" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Ajustes actualizados" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrusores deshabilitados" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format 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}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado correctamente" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Archivo {0} presegmentado" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Siguiente" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Agregar" + +#: /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:109 #, python-brace-format @@ -1166,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos los archivos (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconocido" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Material personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Volumen de impresión" @@ -1197,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1219,7 +1239,7 @@ msgstr "Colocando objetos" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1230,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /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" @@ -1260,7 +1280,12 @@ 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:98 msgctxt "@action:button" @@ -1293,7 +1318,10 @@ 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:173 msgctxt "@title:groupbox" @@ -1365,242 +1393,195 @@ msgstr "Registros" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Enviar informe" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Cargando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando escena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Cargando interfaz..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Ajustes de la máquina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Impresora" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Ajustes de la impresora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (anchura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (profundidad)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Forma de la placa de impresión" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Origen en el centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" -msgstr "Plataforma caliente" +msgstr "Plataforma calentada" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Tipo de GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Ajustes del cabezal de impresión" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" -msgstr "Altura del caballete" +msgid "Gantry Height" +msgstr "Altura del puente" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "Iniciar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "Finalizar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /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:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "GCode final del extrusor" @@ -1610,7 +1591,7 @@ msgid "Install" msgstr "Instalar" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1626,15 +1607,15 @@ msgid "ratings" msgstr "calificaciones" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Complementos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiales" @@ -1644,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Su calificación" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconocido" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1765,7 +1743,7 @@ 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" @@ -1801,7 +1779,10 @@ 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:55 msgctxt "@action:button" @@ -1848,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Buscando paquetes..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "Correo electrónico" @@ -1861,23 +1842,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -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" @@ -1954,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Cargando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "No disponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "No se puede conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Sin actividad" @@ -1995,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Sin título" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anónimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Debe cambiar la configuración" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Detalles" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Impresora no disponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Primera disponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Vidrio" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2033,178 +1994,190 @@ msgstr "En cola" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Ir a Cura Connect" +msgid "Manage in browser" +msgstr "Gestionar en el navegador" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Trabajos de impresión" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Tiempo de impresión total" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Esperando" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Ver historial de impresión" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Conexión existente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 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:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Agregar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Eliminar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Actualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Dirección IP no válida" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Dirección de la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +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 red." +msgstr "Introduzca la dirección IP o el nombre de host de la impresora en la red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Cancelando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Pausando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 msgctxt "@label:status" msgid "Resuming..." -msgstr "Reanudando" +msgstr "Reanudando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /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" @@ -2248,7 +2221,7 @@ msgstr "Pausando..." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 msgctxt "@label" msgid "Resuming..." -msgstr "Reanudando" +msgstr "Reanudando..." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 @@ -2308,44 +2281,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Anular" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminio" @@ -2355,107 +2328,109 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Conecta a una impresora" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Guía de ajustes de Cura" + +#: /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." -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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "Seleccione la impresora conectada a la red que desee supervisar." +msgid "Please connect your printer to the network." +msgstr "Conecte su impresora a la red." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Conecte su impresora Ultimaker a su red local." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /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/SimulationViewMenuComponent.qml:109 +#: /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/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Velocidad" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /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/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de compatibilidad" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Desplazamientos" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Asistentes" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Perímetro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Relleno" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Superior o inferior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Pared interior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "mín." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "máx." @@ -2485,30 +2460,25 @@ 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 this data" -msgstr "No deseo 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 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" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "No ha seleccionado ninguna impresora" +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" @@ -2557,19 +2527,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." @@ -2683,7 +2653,7 @@ msgid "Printer Group" msgstr "Grupo de impresoras" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes del perfil" @@ -2696,19 +2666,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Nombre" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2789,6 +2759,7 @@ 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" @@ -2879,22 +2850,23 @@ msgid "Previous" msgstr "Anterior" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Exportar" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Siguiente" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Consejo" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Genérico" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2905,150 +2877,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Lista de verificación" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Seleccionar actualizaciones de impresora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Bloque Olsson" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3099,170 +2972,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 msgctxt "@label" msgid "Filament weight" msgstr "Anchura del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "El material se ha exportado correctamente a %1" @@ -3277,412 +3150,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Interfaz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Moneda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 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:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Segmentar automáticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamiento de la ventanilla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar voladizos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 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:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Renderizado de cámara: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir y guardar archivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Escalar modelos de gran tamaño" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Escalar modelos demasiado pequeños" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Seleccionar modelos al abrirlos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Preguntar siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir siempre como un proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar modelos siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Perfiles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Descartar siempre los ajustes modificados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Privacidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Buscar actualizaciones al iniciar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 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:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Más información" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Experimental" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 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:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Cambiar nombre" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Crear perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Cambiar nombre de perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impresora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Perfiles predeterminados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Perfiles personalizados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar cambios actuales" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ajustes globales" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Marketplace" @@ -3725,12 +3623,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "A&yuda" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3745,33 +3643,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "buscar ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "No mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidad de los ajustes..." @@ -3782,50 +3680,64 @@ 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:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 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:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 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/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizado" @@ -3840,27 +3752,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3877,8 +3784,8 @@ msgstr "Ha modificado algunos ajustes del perfil. Si desea cambiarlos, hágalo e #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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." +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3906,12 +3813,15 @@ 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." +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/PrintSetupSelector.qml:19 +#: /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 GCode." +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" @@ -3943,7 +3853,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Enviar GCode" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4040,11 +3950,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Genérico" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4060,32 +3965,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir como extrusor activo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Habilitar extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Deshabilitar extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "&Placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Perfil" @@ -4095,7 +4000,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posición de la cámara" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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" @@ -4159,12 +4079,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Seleccionar configuración" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Ver el gráfico de compatibilidad de materiales" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Configuraciones" @@ -4189,17 +4104,17 @@ msgctxt "@label" msgid "Printer" msgstr "Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 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." @@ -4219,42 +4134,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &reciente" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /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:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Ver tipos" +msgid "View type" +msgstr "Ver tipo" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Hola " +msgid "Object list" +msgstr "Lista de objetos" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Cerrar sesión" @@ -4264,11 +4184,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Iniciar sesión" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4279,8 +4194,11 @@ 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" +"- 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" @@ -4292,50 +4210,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Ningún cálculo de tiempo disponible" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "No se puede segmentar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Especificación de tiempos" +msgid "Time estimation" +msgstr "Estimación de tiempos" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Especificación de materiales" +msgid "Material estimation" +msgstr "Estimación de material" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4357,285 +4280,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Impresoras preconfiguradas" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Marketplace" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cerrando Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar paquete" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir archivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Agregar impresora" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4653,7 +4590,9 @@ 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?" +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" @@ -4695,34 +4634,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Crear nuevo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Añadir una impresora a Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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\nSi 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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Fabricante" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Nombre de la impresora" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Agregar impresora" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4743,7 +4654,9 @@ 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:" +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:134 msgctxt "@label" @@ -4880,27 +4793,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Guardar proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 y material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Guardar" @@ -4930,30 +4848,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Ver solo placa de impresión actual" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Vacío" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Organizar todas las placas de impresión" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Agregar una impresora" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Organizar placa de impresión actual" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Agregar una impresora en red" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Agregar una impresora fuera de red" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Agregar" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Nombre de la impresora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Permite cambiar los ajustes de la máquina (como el volumen de impresión, el tamaño de la tobera, etc.)." -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "Acción Ajustes de la máquina" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Buscar, administrar e instalar nuevos paquetes de Cura." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Cuadro de herramientas" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Proporciona la vista de rayos X." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Vista de rayos X" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Proporciona asistencia para leer archivos X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Lector de X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Escribe GCode en un archivo." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "Escritor de GCode" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Comprueba las configuraciones de los modelos y la impresión en busca de posibles problemas de impresión y da consejos." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Proporciona opciones a la máquina para actualizar el firmware." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Actualizador de firmware" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Crear un perfil de cambios de calidad aplanado." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Aplanador de perfil" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Proporciona asistencia para leer archivos AMF." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "Lector de AMF" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Acepta GCode y lo envía a una impresora. El complemento también puede actualizar el firmware." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Impresión USB" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Escribe GCode en un archivo comprimido." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Escritor de GCode comprimido" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Permite la escritura de paquetes de formato Ultimaker." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "Escritor de UFP" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Proporciona una fase de preparación en Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Fase de preparación" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Proporciona asistencia para la conexión directa y la escritura de la unidad extraíble." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Conexión de red UM3" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Guía de ajustes" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Proporciona una fase de supervisión en Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Fase de supervisión" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Busca actualizaciones de firmware." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Buscador de actualizaciones de firmware" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Abre la vista de simulación." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Vista de simulación" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Lee GCode de un archivo comprimido." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Lector de GCode comprimido" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Extensión que permite el posprocesamiento de las secuencias de comandos creadas por los usuarios" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Posprocesamiento" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Crea una malla de borrado que impide la impresión de soportes en determinados lugares" + +#: SupportEraser/plugin.json +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." +msgstr "Envía información anónima de la segmentación. Se puede desactivar en las preferencias." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Info de la segmentación" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Permite leer y escribir perfiles de material basados en XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Perfiles de material" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Proporciona asistencia para la importación de perfiles de versiones anteriores de Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Lector de perfiles antiguos de Cura" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Proporciona asistencia para la importación de perfiles de archivos GCode." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "Lector de perfiles GCode" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Actualiza la configuración de Cura 3.2 a Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Actualización de la versión 3.2 a la 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Actualiza la configuración de Cura 3.3 a Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Actualización de la versión 3.3 a la 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Actualiza la configuración de Cura 2.5 a Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Actualización de la versión 2.5 a la 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Actualiza la configuración de Cura 2.7 a Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Actualiza las configuraciones de Cura 3.4 a Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Actualiza la configuración de Cura 3.0 a Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Actualiza la configuración de Cura 2.6 a Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Actualización de la versión 2.6 a la 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Actualiza las configuraciones de Cura 2.1 a Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Actualización de la versión 2.1 a la 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Actualiza la configuración de Cura 2.2 a Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Actualización de la versión 2.2 a la 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Habilita la capacidad de generar geometría imprimible a partir de archivos de imagen 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Lector de imágenes" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Proporciona el vínculo para el backend de segmentación de CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Backend de CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Proporciona los ajustes por modelo." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Herramienta de ajustes por modelo" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Proporciona asistencia para leer archivos 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Lector de 3MF" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Proporciona una vista de malla sólida normal." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Vista de sólidos" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Permite cargar y visualizar archivos GCode." + +#: GCodeReader/plugin.json +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." +msgstr "Proporciona asistencia para exportar perfiles de Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Escritor de perfiles de Cura" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Imprimir asistente del perfil" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Proporciona asistencia para escribir archivos 3MF." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Proporciona las acciones de la máquina de las máquinas Ultimaker (como un asistente para la nivelación de la plataforma, la selección de actualizaciones, etc.)." + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Acciones de la máquina Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Proporciona asistencia para la importación de perfiles de Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Lector de perfiles de Cura" + +#~ 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" @@ -5151,7 +6108,6 @@ msgstr "X3GWriter" #~ "Print Setup disabled\n" #~ "G-code files cannot be modified" #~ msgstr "" - #~ "Ajustes de impresión deshabilitados\n" #~ "No se pueden modificar los archivos GCode" @@ -5295,62 +6251,6 @@ msgstr "X3GWriter" #~ 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 "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Permite cambiar los ajustes de la máquina (como el volumen de impresión, el tamaño de la tobera, etc.)." - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Acción Ajustes de la máquina" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Buscar, administrar e instalar nuevos paquetes de Cura." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Cuadro de herramientas" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Proporciona la vista de rayos X." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Vista de rayos X" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Proporciona asistencia para leer archivos X3D." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "Lector de X3D" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Escribe GCode en un archivo." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "Escritor de GCode" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Comprueba las configuraciones de los modelos y la impresión en busca de posibles problemas de impresión y da consejos." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Comprobador de modelos" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Muestra los cambios desde la última versión comprobada." @@ -5359,14 +6259,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "Registro de cambios" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Proporciona opciones a la máquina para actualizar el firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Actualizador de firmware" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Crear un perfil de cambios de calidad aplanado." @@ -5375,14 +6267,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "Aplanador de perfil" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Acepta GCode y lo envía a una impresora. El complemento también puede actualizar el firmware." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "Impresión USB" - #~ msgctxt "description" #~ msgid "Ask the user once if he/she agrees with our license." #~ msgstr "Preguntar al usuario una vez si acepta la licencia." @@ -5391,278 +6275,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "UserAgreement" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Escribe GCode en un archivo comprimido." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Escritor de GCode comprimido" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Permite la escritura de paquetes de formato Ultimaker." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "Escritor de UFP" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Proporciona una fase de preparación en Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Fase de preparación" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Proporciona asistencia para la conexión directa y la escritura de la unidad extraíble." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Complemento de dispositivo de salida de unidad extraíble" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Proporciona una fase de supervisión en Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Fase de supervisión" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Busca actualizaciones de firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Buscador de actualizaciones de firmware" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Abre la vista de simulación." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Vista de simulación" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Lee GCode de un archivo comprimido." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Lector de GCode comprimido" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Extensión que permite el posprocesamiento de las secuencias de comandos creadas por los usuarios" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Posprocesamiento" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Crea una malla de borrado que impide la impresión de soportes en determinados lugares" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Borrador de soporte" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Envía información anónima de la segmentación. Se puede desactivar en las preferencias." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Info de la segmentación" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Permite leer y escribir perfiles de material basados en XML." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Perfiles de material" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Proporciona asistencia para la importación de perfiles de versiones anteriores de Cura." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Lector de perfiles antiguos de Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Proporciona asistencia para la importación de perfiles de archivos GCode." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "Lector de perfiles GCode" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Actualiza la configuración de Cura 3.2 a Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Actualización de la versión 3.2 a la 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Actualiza la configuración de Cura 3.3 a Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Actualización de la versión 3.3 a la 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Actualiza la configuración de Cura 2.5 a Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Actualización de la versión 2.5 a la 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Actualiza la configuración de Cura 2.7 a Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Actualización de la versión 2.7 a la 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Actualiza las configuraciones de Cura 3.4 a Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Actualización de la versión 3.4 a la 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Actualiza la configuración de Cura 3.0 a Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Actualización de la versión 3.0 a la 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Actualiza la configuración de Cura 2.6 a Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Actualización de la versión 2.6 a la 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Actualiza las configuraciones de Cura 2.1 a Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Actualización de la versión 2.1 a la 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Actualiza la configuración de Cura 2.2 a Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Actualización de la versión 2.2 a la 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Habilita la capacidad de generar geometría imprimible a partir de archivos de imagen 2D." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Lector de imágenes" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Proporciona el vínculo para el backend de segmentación de CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Backend de CuraEngine" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Proporciona los ajustes por modelo." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Herramienta de ajustes por modelo" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Proporciona asistencia para leer archivos 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "Lector de 3MF" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Proporciona una vista de malla sólida normal." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Vista de sólidos" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Permite cargar y visualizar archivos GCode." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "Lector de GCode" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Proporciona asistencia para exportar perfiles de Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Escritor de perfiles de Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Proporciona asistencia para escribir archivos 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "Escritor de 3MF" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Proporciona las acciones de la máquina de las máquinas Ultimaker (como un asistente para la nivelación de la plataforma, la selección de actualizaciones, etc.)." - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Acciones de la máquina Ultimaker" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Proporciona asistencia para la importación de perfiles de Cura." - -#~ 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." @@ -5703,14 +6315,6 @@ msgstr "X3GWriter" #~ 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" @@ -5756,7 +6360,6 @@ msgstr "X3GWriter" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "No ha podido exportarse con la calidad \"{}\"\n" #~ "Retroceder a \"{}\"." @@ -5933,7 +6536,6 @@ msgstr "X3GWriter" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "Es posible que algunos modelos no se impriman correctamente debido al tamaño del objeto y al material elegido para los modelos: {model_names}.\n" #~ "Consejos para mejorar la calidad de la impresión:\n" #~ "1) Utilizar esquinas redondeadas.\n" @@ -5950,7 +6552,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "No se han encontrado modelos en el dibujo. ¿Puede comprobar el contenido de nuevo y asegurarse de que hay una parte o un ensamblado dentro?\n" #~ "\n" #~ "Gracias." @@ -5961,7 +6562,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Se ha encontrado más de una parte o ensamblado en el dibujo. Actualmente, únicamente son compatibles dibujos con una sola parte o ensamblado.\n" #~ "\n" #~ "Perdone las molestias." @@ -5986,7 +6586,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Estimado cliente:\n" #~ "No hemos encontrado una instalación válida de SolidWorks en el sistema. Esto significa que SolidWorks no está instalado o que no dispone de una licencia válida. Asegúrese de que la ejecución del propio SolidWorks funciona sin problemas o póngase en contacto con su CDTI.\n" #~ "\n" @@ -6001,7 +6600,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Estimado cliente:\n" #~ "Actualmente está ejecutando este complemento en un sistema operativo diferente a Windows. Este complemento solo funcionará en Windows con SolidWorks instalado, siempre que se disponga de una licencia válida. Instale este complemento en un equipo Windows con SolidWorks instalado.\n" #~ "\n" @@ -6106,7 +6704,6 @@ msgstr "X3GWriter" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Abra el directorio\n" #~ "con la macro y el icono" @@ -6136,7 +6733,7 @@ msgstr "X3GWriter" #~ 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" @@ -6228,7 +6825,7 @@ msgstr "X3GWriter" #~ 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" @@ -6405,7 +7002,6 @@ msgstr "X3GWriter" #~ "\n" #~ " Thanks!." #~ msgstr "" - #~ "No se han encontrado modelos en el dibujo. ¿Puede comprobar el contenido de nuevo y asegurarse de que hay una parte o un ensamblado dentro?\n" #~ "\n" #~ " Gracias." @@ -6416,7 +7012,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Se ha encontrado más de una parte o ensamblado en el dibujo. Actualmente únicamente son compatibles dibujos con una sola parte o ensamblado.\n" #~ "\n" #~ " Disculpe." @@ -6451,7 +7046,6 @@ msgstr "X3GWriter" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

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

\n" #~ "

Utilice el botón «Enviar informe» para publicar automáticamente un informe de errores en nuestros servidores.

\n" #~ " " @@ -6618,7 +7212,6 @@ msgstr "X3GWriter" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Se ha producido una excepción fatal. Envíenos este informe de errores para que podamos solucionar el problema.

\n" #~ "

Utilice el botón «Enviar informe» para publicar automáticamente un informe de errores en nuestros servidores.

\n" #~ " " @@ -6765,7 +7358,6 @@ msgstr "X3GWriter" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Se ha producido una excepción fatal de la que no podemos recuperarnos.

\n" #~ "

Use la siguiente información para enviar un informe de error a http://github.com/Ultimaker/Cura/issues

\n" #~ " " @@ -6808,7 +7400,6 @@ msgstr "X3GWriter" #~ "You need to accept this license to install this plugin.\n" #~ "Do you agree with the terms below?" #~ msgstr "" - #~ " El complemento incluye una licencia.\n" #~ "Debe aceptar dicha licencia para instalar el complemento.\n" #~ "¿Acepta las siguientes condiciones?" @@ -7336,7 +7927,6 @@ msgstr "X3GWriter" #~ msgid "Print Selected Model with %1" #~ msgid_plural "Print Selected Models With %1" #~ msgstr[0] "Imprimir modelo seleccionado con %1" - #~ msgstr[1] "Imprimir modelos seleccionados con %1" #~ msgctxt "@info:status" @@ -7366,7 +7956,6 @@ msgstr "X3GWriter" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Se ha producido una excepción fatal de la que no podemos recuperarnos.

\n" #~ "

Esperamos que la imagen de este gatito le ayude a recuperarse del shock.

\n" #~ "

Use la siguiente información para enviar un informe de error a http://github.com/Ultimaker/Cura/issues

\n" diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index 9333665e05..2183670518 100644 --- a/resources/i18n/es_ES/fdmextruder.def.json.po +++ b/resources/i18n/es_ES/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index 3eeabf81ca..8ffd3969a6 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -5,17 +5,17 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Spanish\n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -233,7 +237,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 +247,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 +257,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 +267,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 +277,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 +307,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 +317,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 +337,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 +402,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 +422,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 +432,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 +442,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 +472,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 @@ -1293,8 +1297,12 @@ 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 +1324,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 +1341,15 @@ 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" @@ -1631,7 +1646,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" @@ -1863,6 +1880,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 +2000,87 @@ 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 +2091,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,8 +2328,9 @@ 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." -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." +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 msgctxt "material_standby_temperature label" @@ -2153,6 +2382,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 +2583,15 @@ 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" @@ -2923,6 +3163,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 +3443,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,12 +3509,12 @@ 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" +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." @@ -3390,8 +3645,9 @@ 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" @@ -3769,14 +4025,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" @@ -3898,7 +4154,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" @@ -4270,16 +4528,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" @@ -4320,16 +4568,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" @@ -4340,6 +4578,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" @@ -4622,8 +4870,9 @@ 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" @@ -4855,6 +5104,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5112,8 +5371,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" @@ -5345,7 +5604,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" @@ -5454,7 +5715,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 @@ -5464,7 +5725,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 @@ -5474,7 +5735,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 @@ -5484,7 +5745,7 @@ 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" +msgid "Adaptive Layers Threshold" msgstr "Umbral de las capas de adaptación" #: fdmprinter.def.json @@ -5702,6 +5963,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5762,6 +6173,138 @@ 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 "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." @@ -5899,7 +6442,6 @@ msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue de #~ "Gcode 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" #~ "." @@ -5912,7 +6454,6 @@ msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue de #~ "Gcode 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" #~ "." @@ -5969,7 +6510,6 @@ msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue de #~ "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.\n" #~ "Esta es la distancia mínima; múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." diff --git a/resources/i18n/fdmextruder.def.json.pot b/resources/i18n/fdmextruder.def.json.pot index afec8e8257..991d418f7a 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: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" diff --git a/resources/i18n/fdmprinter.def.json.pot b/resources/i18n/fdmprinter.def.json.pot index 2c18d6ebed..d1a75607cb 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: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" @@ -244,7 +244,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 +255,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 +265,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "" #: fdmprinter.def.json @@ -277,7 +277,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "" #: fdmprinter.def.json @@ -289,7 +289,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 +325,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 +337,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 +362,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "" #: fdmprinter.def.json @@ -429,7 +429,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "" #: fdmprinter.def.json @@ -449,7 +449,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "" #: fdmprinter.def.json @@ -459,7 +459,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 +469,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "" #: fdmprinter.def.json @@ -503,7 +503,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 @@ -1448,7 +1448,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 +1473,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 +1493,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 @@ -2143,6 +2152,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" @@ -2266,6 +2287,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" @@ -2278,6 +2387,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" @@ -2414,7 +2644,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 "" @@ -2478,6 +2708,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" @@ -2701,15 +2941,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 @@ -3360,6 +3601,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" @@ -3682,6 +3933,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" @@ -3757,12 +4013,12 @@ 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." @@ -3919,7 +4175,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 "" @@ -4353,14 +4609,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 "" @@ -4935,16 +5191,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" @@ -4987,18 +5233,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" @@ -5011,6 +5245,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" @@ -5358,7 +5604,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 "" @@ -5653,6 +5899,19 @@ msgid "" "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." +msgstr "" + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5965,9 +6224,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 @@ -6382,7 +6639,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "" #: fdmprinter.def.json @@ -6394,7 +6651,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 @@ -6404,7 +6661,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 @@ -6416,7 +6673,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Threshold" msgstr "" #: fdmprinter.def.json @@ -6668,6 +6925,173 @@ 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 "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 677f414f77..4a49ee7835 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Laitteen asetukset" @@ -54,7 +54,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,16 +64,6 @@ msgid "" "

View print quality guide

" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Changelog" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Näytä muutosloki" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -89,37 +79,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Profiili on tasoitettu ja aktivoitu." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-tulostus" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Yhdistetty USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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" @@ -130,6 +119,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -142,6 +136,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 "" @@ -200,10 +195,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Virhe" @@ -232,9 +227,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Varoitus" @@ -261,266 +256,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Siirrettävä asema" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Tulosta verkon kautta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Tulosta verkon kautta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Yhdistetty verkon kautta tulostimeen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Yritä uudelleen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 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:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 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:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Pyydä käyttöoikeutta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Ristiriitainen määritys" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Lähetetään tietoja tulostimeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Lähetetään tietoja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, python-brace-format msgctxt "@info:status" msgid "No Printcore loaded in slot {slot_number}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, python-brace-format msgctxt "@info:status" msgid "No material loaded in slot {slot_number}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synkronoi tulostimen kanssa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 msgctxt "@info:status" msgid "Print job was successfully sent to the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, python-brace-format msgctxt "@info:status" msgid "The print job '{job_name}' was finished." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Tulosta valmis" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "" @@ -535,48 +531,52 @@ msgctxt "@info:status" msgid "today" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" +msgid "Sending Print Job" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading via Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 msgctxt "@info:status" msgid "Send and monitor print jobs from anywhere using your Ultimaker account." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 msgctxt "@info:status" msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "" @@ -591,7 +591,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Päivitystietoja ei löytynyt." @@ -648,46 +648,11 @@ 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" msgstr "Cura 15.04 -profiilit" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -713,56 +678,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-kuva" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -793,19 +758,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Suutin" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "" @@ -820,18 +785,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "G-coden tiedot" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -854,7 +819,7 @@ msgctxt "@info:backup_status" msgid "There was an error listing your backups." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:121 +#: /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 "" @@ -915,242 +880,260 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Ulkoseinämä" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Sisäseinämät" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Pintakalvo" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Täyttö" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Tuen täyttö" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Tukiliittymä" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Tuki" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Helma" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Siirtoliike" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Takaisinvedot" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Muu" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Esiviipaloitu tiedosto {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Onnistuneesti tuotu profiili {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Mukautettu profiili" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profiilista puuttuu laatutyyppi." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Esiviipaloitu tiedosto {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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" -msgstr "" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +msgctxt "@action:button" +msgid "Close" +msgstr "Sulje" -#: /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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Lisää" + +#: /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:109 @@ -1164,23 +1147,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Tuntematon" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Mukautettu materiaali" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Mukautettu" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Tulostustilavuus" @@ -1195,16 +1196,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "" +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1217,7 +1233,7 @@ msgstr "" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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." @@ -1228,19 +1244,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Paikkaa ei löydy" @@ -1363,242 +1379,195 @@ msgstr "" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ladataan laitteita..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Asetetaan näkymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ladataan käyttöliittymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Laitteen asetukset" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Tulostin" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" -msgstr "Tulostimen asetukset" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (leveys)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (syvyys)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (korkeus)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Alustan muoto" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" -msgstr "Alkukohta keskellä" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" -msgstr "Lämmitettävä pöytä" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" -msgstr "Tulostuspään asetukset" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" -msgstr "Korokkeen korkeus" +msgid "Gantry Height" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Suulakkeiden määrä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -msgctxt "@label" -msgid "Nozzle Settings" -msgstr "Suutinasetukset" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 +#: /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:402 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "" @@ -1608,7 +1577,7 @@ msgid "Install" msgstr "" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Asennettu" @@ -1624,15 +1593,15 @@ msgid "ratings" 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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiaalit" @@ -1642,52 +1611,49 @@ msgctxt "@label" msgid "Your rating" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Tuntematon" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1763,7 +1729,7 @@ 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 "" @@ -1846,12 +1812,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "" @@ -1861,22 +1827,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Sulje" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1952,15 +1902,17 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 msgctxt "@info" -msgid "These options are not available because you are monitoring a cloud printer." +msgid "Please update your printer's firmware to manage the queue remotely." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 @@ -1968,22 +1920,22 @@ 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "" @@ -1993,37 +1945,31 @@ msgctxt "@label" msgid "Untitled" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2031,181 +1977,189 @@ msgstr "Jonossa" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" +msgid "Manage in browser" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 msgctxt "@label" -msgid "Print jobs" +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:116 msgctxt "@label" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 +msgctxt "@label" msgid "Total print time" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 msgctxt "@message:text" msgid "This printer/group is already added to Cura. Please select another printer/group." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Yhdistä verkkotulostimeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Lisää" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Muokkaa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Poista" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Päivitä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Yhdistä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Tulostimen osoite" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Anna verkon tulostimen IP-osoite tai isäntänimi." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /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:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "" @@ -2309,44 +2263,44 @@ msgctxt "@action:button" msgid "Override" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "" @@ -2356,107 +2310,108 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Yhdistä tulostimeen" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." +msgid "Please connect your printer to the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /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/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linjojen tyyppi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Yhteensopivuustila" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Täyttö" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Yläosa/alaosa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Sisäseinämä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "" @@ -2486,29 +2441,24 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" +msgid "Allow sending anonymous data" msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 @@ -2558,19 +2508,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." @@ -2684,7 +2634,7 @@ msgid "Printer Group" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Profiilin asetukset" @@ -2697,19 +2647,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Nimi" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2790,6 +2740,7 @@ 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 "" @@ -2880,22 +2831,23 @@ msgid "Previous" msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Vie" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2906,150 +2858,51 @@ msgctxt "@label" msgid "Checklist" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Valitse tulostimen päivitykset" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Block -lämmitysosa" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3100,170 +2953,170 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Haluatko varmasti keskeyttää tulostuksen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "Tarttuvuustiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Tuo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaalin vieminen onnistui kohteeseen %1" @@ -3278,412 +3131,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Käyttöliittymä" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Kieli:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Valuutta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Teema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Viipaloi automaattisesti, kun asetuksia muutetaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Viipaloi automaattisesti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Näyttöikkunan käyttäytyminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Näytä uloke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomaa hiiren suuntaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Pakotetaanko kerros yhteensopivuustilaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Tiedostojen avaaminen ja tallentaminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaalaa suuret mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaalaa erittäin pienet mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Projektitiedoston avaamisen oletustoimintatapa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Projektitiedoston avaamisen oletustoimintatapa: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Avaa aina projektina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Tuo mallit aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Tietosuoja" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 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:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Lähetä (anonyymit) tulostustiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Nimeä uudelleen" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Luo profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Monista profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Nimeä profiili uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Profiilin tuonti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Profiilin vienti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Tulostin: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Mukautetut profiilit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Hylkää tehdyt muutokset" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Yleiset asetukset" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "" @@ -3726,12 +3604,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Ohje" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3746,33 +3624,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Kopioi arvo kaikkiin suulakepuristimiin" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Piilota tämä asetus" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pidä tämä asetus näkyvissä" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Määritä asetusten näkyvyys..." @@ -3788,27 +3666,32 @@ msgstr "" "\n" "Tee asetuksista näkyviä napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3819,7 +3702,7 @@ msgstr "" "\n" "Palauta profiilin arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3830,12 +3713,12 @@ msgstr "" "\n" "Palauta laskettu arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "" @@ -3850,27 +3733,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3887,7 +3765,7 @@ msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 msgctxt "@tooltip" -msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 @@ -3921,9 +3799,9 @@ msgstr "" "\n" "Avaa profiilin hallinta napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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." +msgid "Print setup disabled. G-code file can not be modified." msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 @@ -3956,7 +3834,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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 "" @@ -4053,11 +3931,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4073,32 +3946,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Tulostin" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Aseta aktiiviseksi suulakepuristimeksi" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Profiili" @@ -4108,7 +3981,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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 "" @@ -4172,12 +4060,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "" @@ -4202,17 +4085,17 @@ msgctxt "@label" msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "" @@ -4232,42 +4115,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Avaa &viimeisin" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Tulostusaika" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" +msgid "View type" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " +msgid "Object list" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "" @@ -4277,11 +4165,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4292,7 +4175,7 @@ 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" +"- Get exclusive access to print profiles from leading brands" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 @@ -4305,49 +4188,54 @@ msgctxt "@label" msgid "No time estimation available" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 msgctxt "@button" msgid "Preview" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Viipalointi ei onnistu" +msgid "Unable to slice" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" +msgid "Time estimation" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" +msgid "Material estimation" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 @@ -4370,285 +4258,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Avaa tiedosto(t)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Lisää tulostin" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4710,34 +4612,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Luo uusi profiili" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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 "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Lisää tulostin" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4897,27 +4771,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Tallenna projekti" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Suulake %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Tallenna" @@ -4947,31 +4826,842 @@ msgctxt "@action:button" msgid "Import models" msgstr "Tuo mallit" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" msgstr "" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "" + +#: /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/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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 "" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." msgstr "" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" +msgid "Machine Settings action" +msgstr "Laitteen asetukset -toiminto" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." msgstr "" +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Näyttää kerrosnäkymän." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Kerrosnäkymä" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Tukee X3D-tiedostojen lukemista." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D-lukija" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "" + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "" + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "" + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "" + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "" + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Hyväksyy GCode-määrittelyt ja lähettää ne tulostimeen. Lisäosa voi myös päivittää laiteohjelmiston." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB-tulostus" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "" + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "" + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Tukee irrotettavan aseman kytkemistä lennossa ja sille kirjoittamista." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "Irrotettavan aseman tulostusvälineen laajennus" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers." +msgstr "" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3-verkkoyhteys" + +#: SettingsGuide/plugin.json +msgctxt "description" +msgid "Provides extra information and explanations about settings in Cura, with images and animations." +msgstr "" + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Tarkistaa laiteohjelmistopäivitykset." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Laiteohjelmiston päivitysten tarkistus" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "" + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Lisäosa, jonka avulla käyttäjät voivat luoda komentosarjoja jälkikäsittelyä varten" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Jälkikäsittely" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "" + +#: SupportEraser/plugin.json +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." +msgstr "Lähettää anonyymiä viipalointitietoa. Voidaan lisäasetuksista kytkeä pois käytöstä." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Viipalointitiedot" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Mahdollistaa XML-pohjaisten materiaaliprofiilien lukemisen ja kirjoittamisen." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Materiaaliprofiilit" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Tukee profiilien tuontia aikaisemmista Cura-versioista." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Aikaisempien Cura-profiilien lukija" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Tukee profiilien tuontia GCode-tiedostoista." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Päivittää kokoonpanon versiosta Cura 2.5 versioon Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Päivitys versiosta 2.5 versioon 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Päivittää kokoonpanon versiosta Cura 2.7 versioon Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "" + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Päivittää kokoonpanon versiosta Cura 2.6 versioon Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Päivitys versiosta 2.6 versioon 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Päivittää kokoonpanon versiosta Cura 2.1 versioon Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Päivitys versiosta 2.1 versioon 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Päivittää kokoonpanon versiosta Cura 2.2 versioon Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Päivitys versiosta 2.2 versioon 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Mahdollistaa tulostettavien geometrioiden luomisen 2D-kuvatiedostoista." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Kuvanlukija" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Linkki CuraEngine-viipalointiin taustalla." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine-taustaosa" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Mallikohtaisten asetusten muokkaus." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Mallikohtaisten asetusten työkalu" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Tukee 3MF-tiedostojen lukemista." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF-lukija" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Näyttää normaalin kiinteän verkkonäkymän." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Kiinteä näkymä" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Mahdollistaa GCode-tiedostojen lataamisen ja näyttämisen." + +#: GCodeReader/plugin.json +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." +msgstr "Tukee Cura-profiilien vientiä." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura-profiilin kirjoitin" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +msgstr "" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Tukee 3MF-tiedostojen kirjoittamista." + +#: 3MFWriter/plugin.json +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.)." +msgstr "" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker-laitteen toiminnot" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Tukee Cura-profiilien tuontia." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura-profiilin lukija" + +#~ 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" @@ -5163,34 +5853,6 @@ msgstr "" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "Napsauta ja tarkista materiaalin yhteensopivuus sivustolla Ultimaker.com." -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Laitteen asetukset -toiminto" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Näyttää kerrosnäkymän." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Kerrosnäkymä" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Tukee X3D-tiedostojen lukemista." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3D-lukija" - -#~ 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 "description" #~ msgid "Shows changes since latest checked version." #~ msgstr "Näyttää viimeisimmän tarkistetun version jälkeen tapahtuneet muutokset." @@ -5207,186 +5869,6 @@ msgstr "" #~ msgid "Profile flatener" #~ msgstr "Profiilin tasoitus" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Hyväksyy GCode-määrittelyt ja lähettää ne tulostimeen. Lisäosa voi myös päivittää laiteohjelmiston." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USB-tulostus" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Tukee irrotettavan aseman kytkemistä lennossa ja sille kirjoittamista." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Irrotettavan aseman tulostusvälineen laajennus" - -#~ msgctxt "name" -#~ msgid "UM3 Network Connection" -#~ msgstr "UM3-verkkoyhteys" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Tarkistaa laiteohjelmistopäivitykset." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Laiteohjelmiston päivitysten tarkistus" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Lisäosa, jonka avulla käyttäjät voivat luoda komentosarjoja jälkikäsittelyä varten" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Jälkikäsittely" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Lähettää anonyymiä viipalointitietoa. Voidaan lisäasetuksista kytkeä pois käytöstä." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Viipalointitiedot" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Mahdollistaa XML-pohjaisten materiaaliprofiilien lukemisen ja kirjoittamisen." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Materiaaliprofiilit" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Tukee profiilien tuontia aikaisemmista Cura-versioista." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Aikaisempien Cura-profiilien lukija" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Tukee profiilien tuontia GCode-tiedostoista." - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Päivittää kokoonpanon versiosta Cura 2.5 versioon Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Päivitys versiosta 2.5 versioon 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Päivittää kokoonpanon versiosta Cura 2.7 versioon Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Päivitys versiosta 2.7 versioon 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Päivittää kokoonpanon versiosta Cura 2.6 versioon Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Päivitys versiosta 2.6 versioon 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Päivittää kokoonpanon versiosta Cura 2.1 versioon Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Päivitys versiosta 2.1 versioon 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Päivittää kokoonpanon versiosta Cura 2.2 versioon Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Päivitys versiosta 2.2 versioon 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Mahdollistaa tulostettavien geometrioiden luomisen 2D-kuvatiedostoista." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Kuvanlukija" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Linkki CuraEngine-viipalointiin taustalla." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "CuraEngine-taustaosa" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Mallikohtaisten asetusten muokkaus." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Mallikohtaisten asetusten työkalu" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Tukee 3MF-tiedostojen lukemista." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MF-lukija" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Näyttää normaalin kiinteän verkkonäkymän." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Kiinteä näkymä" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Mahdollistaa GCode-tiedostojen lataamisen ja näyttämisen." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "GCode-lukija" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Tukee Cura-profiilien vientiä." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura-profiilin kirjoitin" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Tukee 3MF-tiedostojen kirjoittamista." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF-kirjoitin" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ultimaker-laitteen toiminnot" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Tukee Cura-profiilien tuontia." - -#~ msgctxt "name" -#~ msgid "Cura Profile Reader" -#~ msgstr "Cura-profiilin lukija" - #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Päivitä laiteohjelmisto" diff --git a/resources/i18n/fi_FI/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po index f5ce73790d..949d9518a5 100644 --- a/resources/i18n/fi_FI/fdmextruder.def.json.po +++ b/resources/i18n/fi_FI/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index 3bb377fe22..a00a4832a9 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -232,7 +232,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 +242,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 +252,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 +262,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 +272,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 +302,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 +312,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 +332,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 +397,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 +417,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 +427,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 +437,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 +467,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" @@ -1292,8 +1292,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 +1315,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 +1332,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" @@ -1862,6 +1867,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 +1987,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 +2077,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 +2314,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 @@ -2152,6 +2367,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 +2568,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" @@ -2922,6 +3147,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 +3427,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,12 +3493,12 @@ 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" +msgctxt "support_infill_angles description" msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." msgstr "" @@ -3389,8 +3629,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" @@ -3768,14 +4008,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" @@ -4269,16 +4509,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" @@ -4319,16 +4549,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" @@ -4339,6 +4559,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" @@ -4621,8 +4851,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" @@ -4854,6 +5084,16 @@ 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." +msgstr "" + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5111,8 +5351,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" @@ -5455,7 +5695,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 @@ -5465,7 +5705,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 @@ -5475,7 +5715,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 @@ -5485,7 +5725,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Threshold" msgstr "" #: fdmprinter.def.json @@ -5703,6 +5943,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5763,6 +6153,94 @@ 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 "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." diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index cc91fe8cdb..41917b4933 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -5,20 +5,20 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: French\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Paramètres de la machine" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistant de modèle 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,17 +64,11 @@ 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 "Changelog" -msgstr "Récapitulatif des changements" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -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" @@ -91,37 +85,36 @@ 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:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Fichier AMF" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impression par USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connecté via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -132,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "Fichier X3G" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -144,6 +142,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" @@ -202,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Erreur" @@ -234,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Avertissement" @@ -263,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Lecteur amovible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprimer sur le réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Connecté sur le réseau." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Statut d'authentification" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Statut d'authentification" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Réessayer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 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:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Accès à l'imprimante accepté" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Demande d'accès" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuration différente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Envoi des données à l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Envoi des données" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniser avec votre imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Connecté sur le réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Données envoyées" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Afficher sur le moniteur" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Impression terminée" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Vide" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Inconnu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Imprimer via le cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Imprimer via le cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Connecté via le cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Erreur de cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Impossible d'exporter la tâche d'impression." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Impossible de transférer les données à l'imprimante." @@ -537,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "aujourd'hui" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Une erreur s'est produite lors de la connexion au cloud." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Lancement d'une tâche d'impression" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Envoi de données à un cluster distant" +msgid "Uploading via Ultimaker Cloud" +msgstr "Téléchargement via Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Se connecter à Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Ne plus me demander pour cette imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Prise en main" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Connecté !" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Consulter votre connexion" @@ -593,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Surveiller" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Impossible d'accéder aux informations de mise à jour." @@ -650,46 +654,11 @@ 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" msgstr "Profils Cura 15.04" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Évaluation" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -715,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Image GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -795,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Buse" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Ouvrir un fichier de projet" @@ -822,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Détails G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -856,7 +825,7 @@ 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:121 +#: /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." @@ -917,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Aperçu" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Paroi externe" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Parois internes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Couche extérieure" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Remplissage" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Remplissage du support" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface du support" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Support" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Jupe" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Déplacement" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Rétractions" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Autre" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Fichier {0} prédécoupé" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Non pris en charge" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL de fichier invalide :" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Pas écrasé" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Paramètres mis à jour" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrudeuse(s) désactivée(s)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format 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} :" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, 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:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Personnaliser le profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, 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 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Suivant" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Ajouter" + +#: /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:109 #, python-brace-format @@ -1166,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tous les fichiers (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Inconnu" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Matériau personnalisé" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Personnalisé" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume d'impression" @@ -1197,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1219,7 +1239,7 @@ msgstr "Placement des objets" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1230,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Impossible de trouver un emplacement" @@ -1260,7 +1280,12 @@ 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:98 msgctxt "@action:button" @@ -1293,7 +1318,10 @@ 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:173 msgctxt "@title:groupbox" @@ -1365,242 +1393,195 @@ msgstr "Journaux" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Envoyer rapport" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Chargement des machines..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Préparation de la scène..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Chargement de l'interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Paramètres de la machine" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Imprimante" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Paramètres de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Largeur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profondeur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Hauteur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Forme du plateau" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Origine au centre" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Plateau chauffant" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Parfum G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Paramètres de la tête d'impression" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Hauteur du portique" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Nombre d'extrudeuses" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-Code de démarrage" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "G-Code de fin" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /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:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -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" @@ -1610,7 +1591,7 @@ msgid "Install" msgstr "Installer" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installé" @@ -1626,15 +1607,15 @@ msgid "ratings" msgstr "évaluations" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plug-ins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Matériaux" @@ -1644,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Votre évaluation" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Inconnu" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1765,7 +1743,7 @@ 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é" @@ -1801,7 +1779,10 @@ 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:55 msgctxt "@action:button" @@ -1848,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Récupération des paquets..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1863,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Fermer" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1954,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Chargement..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Indisponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Injoignable" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Inactif" @@ -1995,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Sans titre" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anonyme" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Nécessite des modifications de configuration" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Détails" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Imprimante indisponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Premier disponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Verre" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2033,178 +1994,191 @@ msgstr "Mis en file d'attente" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Aller à Cura Connect" +msgid "Manage in browser" +msgstr "Gérer dans le navigateur" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Tâches d'impression" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Temps total d'impression" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Attente de" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Voir l'historique d'impression" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Connexion existante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 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:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Ajouter" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Modifier" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Supprimer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Rafraîchir" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Connecter" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Adresse IP non valide" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Adresse de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Abandon..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Mise en pause..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Finit %1 à %2" @@ -2308,44 +2282,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Remplacer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminium" @@ -2355,107 +2329,109 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Connecter à une imprimante" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Guide des paramètres de Cura" + +#: /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." -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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 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." +msgid "Please connect your printer to the network." +msgstr "Veuillez connecter votre imprimante au réseau." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Veuillez connecter votre imprimante Ultimaker à votre réseau local." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /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/SimulationViewMenuComponent.qml:109 +#: /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/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Taux d'alimentation" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /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/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Mode de compatibilité" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Déplacements" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Aides" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Coque" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Remplissage" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Haut / bas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Paroi interne" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2485,30 +2461,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "Permettre l'envoi de ces données à Ultimaker et nous aider à améliorer Cura" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Aucune impression sélectionnée" +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" @@ -2557,19 +2528,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." @@ -2683,7 +2654,7 @@ msgid "Printer Group" msgstr "Groupe d'imprimantes" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Paramètres de profil" @@ -2696,19 +2667,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Nom" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2789,6 +2760,7 @@ 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" @@ -2879,22 +2851,23 @@ msgid "Previous" msgstr "Précédent" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Exporter" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Suivant" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Astuce" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Générique" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2905,150 +2878,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Liste de contrôle" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Sélectionner les mises à niveau de l'imprimante" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Blocage Olsson" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3099,170 +2973,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Importer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Matériau exporté avec succès vers %1" @@ -3277,412 +3151,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Langue :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Devise :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Thème :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 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:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Découper automatiquement" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportement Viewport" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Mettre en surbrillance les porte-à-faux" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 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:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Rendu caméra : " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Perspective" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Orthogonale" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Ouvrir et enregistrer des fichiers" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 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:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 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:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 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:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Toujours me demander" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Toujours ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Toujours importer les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Profils" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 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:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Confidentialité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 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:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 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:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Plus d'informations" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Expérimental" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "Utiliser la fonctionnalité multi-plateau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Renommer" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Créer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Dupliquer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Renommer le profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Importer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Exporter un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Imprimante : %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Profils par défaut" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Personnaliser les profils" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Ignorer les modifications actuelles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Paramètres généraux" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Marché en ligne" @@ -3725,12 +3624,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Aide" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3745,33 +3644,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "paramètres de recherche" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Afficher ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurer la visibilité des paramètres..." @@ -3782,50 +3681,64 @@ 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:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 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:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 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/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personnalisé" @@ -3840,27 +3753,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3877,7 +3785,7 @@ msgstr "Vous avez modifié certains paramètres du profil. Si vous souhaitez les #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 msgctxt "@tooltip" -msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +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é." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 @@ -3906,11 +3814,14 @@ 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." +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/PrintSetupSelector.qml:19 +#: /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." +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 @@ -3943,7 +3854,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Envoyer G-Code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4040,11 +3951,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoris" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Générique" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4060,32 +3966,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Im&primante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Définir comme extrudeur actif" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Activer l'extrudeuse" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Désactiver l'extrudeuse" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "Plateau" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Profil" @@ -4095,7 +4001,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Position de la &caméra" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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" @@ -4159,12 +4080,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Sélectionner la configuration" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Voir le tableau de compatibilité des matériaux" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Configurations" @@ -4189,17 +4105,17 @@ msgctxt "@label" msgid "Printer" msgstr "Imprimante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 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." @@ -4219,42 +4135,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Ouvrir un fichier &récent" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /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:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Types d'affichages" +msgid "View type" +msgstr "Type d'affichage" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Bonjour " +msgid "Object list" +msgstr "Liste d'objets" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Déconnexion" @@ -4264,11 +4185,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Se connecter" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4279,8 +4195,11 @@ 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" +"- 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" @@ -4292,50 +4211,55 @@ 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:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "Impossible de découper" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Spécification de durée" +msgid "Time estimation" +msgstr "Estimation de durée" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Spécification des matériaux" +msgid "Material estimation" +msgstr "Estimation du matériau" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4357,285 +4281,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Imprimantes préréglées" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Marché en ligne" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /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:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fermeture de Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Installer le paquet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Ouvrir le(s) fichier(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Ajouter une imprimante" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4653,7 +4591,9 @@ 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 ?" +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" @@ -4695,34 +4635,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Créer un nouveau profil" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Ajouter une imprimante à Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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\nSi 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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Fabricant" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Nom de l'imprimante" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Ajouter une imprimante" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4743,7 +4655,9 @@ 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 :" +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:134 msgctxt "@label" @@ -4880,27 +4794,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Enregistrer le projet" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Plateau" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrudeuse %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & matériau" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Matériau" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Enregistrer" @@ -4930,30 +4849,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Importer les modèles" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Afficher uniquement le plateau actuel" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Vide" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Réorganiser sur tous les plateaux" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Ajouter une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Réorganiser le plateau actuel" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Ajouter une imprimante en réseau" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Ajouter une imprimante hors réseau" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Ajouter" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Nom de l'imprimante" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Permet de modifier les paramètres de la machine (tels que volume d'impression, taille de buse, etc.)" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "Action Paramètres de la machine" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Rechercher, gérer et installer de nouveaux paquets Cura." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Boîte à outils" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Permet la vue Rayon-X." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Vue Rayon-X" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Fournit la prise en charge de la lecture de fichiers X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Lecteur X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Enregistre le G-Code dans un fichier." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "Générateur de G-Code" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Vérifie les modèles et la configuration de l'impression pour déceler d'éventuels problèmes d'impression et donne des suggestions." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Fournit à une machine des actions permettant la mise à jour du firmware." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Programme de mise à jour du firmware" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Créer un profil de changements de qualité aplati." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Aplatisseur de profil" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Fournit la prise en charge de la lecture de fichiers AMF." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "Lecteur AMF" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Accepte les G-Code et les envoie à une imprimante. Ce plugin peut aussi mettre à jour le firmware." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Impression par USB" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Enregistre le G-Code dans une archive compressée." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Générateur de G-Code compressé" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Permet l'écriture de fichiers Ultimaker Format Package." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "Générateur UFP" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Fournit une étape de préparation dans Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Étape de préparation" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Permet le branchement hot-plug et l'écriture sur lecteur amovible." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Connexion au réseau UM3" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Guide des paramètres" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Fournit une étape de surveillance dans Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Étape de surveillance" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Vérifie les mises à jour du firmware." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Vérificateur des mises à jour du firmware" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Fournit la Vue simulation." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Vue simulation" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Lit le G-Code à partir d'une archive compressée." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Lecteur G-Code compressé" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Extension qui permet le post-traitement des scripts créés par l'utilisateur" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Post-traitement" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Crée un maillage effaceur pour bloquer l'impression du support en certains endroits" + +#: SupportEraser/plugin.json +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." +msgstr "Envoie des informations anonymes sur le découpage. Peut être désactivé dans les préférences." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Information sur le découpage" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Offre la possibilité de lire et d'écrire des profils matériels basés sur XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Profils matériels" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Fournit la prise en charge de l'importation de profils à partir de versions Cura antérieures." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Lecteur de profil Cura antérieur" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Fournit la prise en charge de l'importation de profils à partir de fichiers g-code." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "Lecteur de profil G-Code" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Configurations des mises à niveau de Cura 3.2 vers Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Mise à niveau de 3.2 vers 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Configurations des mises à niveau de Cura 3.3 vers Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Mise à niveau de 3.3 vers 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Configurations des mises à niveau de Cura 2.5 vers Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Mise à niveau de 2.5 vers 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Met à niveau les configurations, de Cura 2.7 vers Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Configurations des mises à niveau de Cura 3.4 vers Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Met à niveau les configurations, de Cura 3.0 vers Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Configurations des mises à niveau de Cura 2.6 vers Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Mise à niveau de 2.6 vers 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Configurations des mises à niveau de Cura 2.1 vers Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Mise à niveau vers 2.1 vers 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Configurations des mises à niveau de Cura 2.2 vers Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Mise à niveau de 2.2 vers 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Permet de générer une géométrie imprimable à partir de fichiers d'image 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Lecteur d'images" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Fournit le lien vers l'arrière du système de découpage CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Système CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Fournit les paramètres par modèle." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Outil de paramètres par modèle" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Fournit la prise en charge de la lecture de fichiers 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Lecteur 3MF" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Affiche une vue en maille solide normale." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Vue solide" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Permet le chargement et l'affichage de fichiers G-Code." + +#: GCodeReader/plugin.json +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." +msgstr "Fournit la prise en charge de l'exportation de profils Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Générateur de profil Cura" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Assistant de profil d'impression" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Permet l'écriture de fichiers 3MF." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Fournit les actions de la machine pour les machines Ultimaker (telles que l'assistant de calibration du plateau, sélection des mises à niveau, etc.)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Actions de la machine Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Fournit la prise en charge de l'importation de profils Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Lecteur de profil Cura" + +#~ 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" @@ -5151,7 +6109,6 @@ msgstr "X3GWriter" #~ "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" @@ -5295,62 +6252,6 @@ msgstr "X3GWriter" #~ 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 "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Permet de modifier les paramètres de la machine (tels que volume d'impression, taille de buse, etc.)" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Action Paramètres de la machine" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Rechercher, gérer et installer de nouveaux paquets Cura." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Boîte à outils" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Permet la vue Rayon-X." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Vue Rayon-X" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Fournit la prise en charge de la lecture de fichiers X3D." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "Lecteur X3D" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Enregistre le G-Code dans un fichier." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "Générateur de G-Code" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Vérifie les modèles et la configuration de l'impression pour déceler d'éventuels problèmes d'impression et donne des suggestions." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Contrôleur de modèle" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Affiche les changements depuis la dernière version." @@ -5359,14 +6260,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "Récapitulatif des changements" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Fournit à une machine des actions permettant la mise à jour du firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Programme de mise à jour du firmware" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Créer un profil de changements de qualité aplati." @@ -5375,14 +6268,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "Aplatisseur de profil" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Accepte les G-Code et les envoie à une imprimante. Ce plugin peut aussi mettre à jour le firmware." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "Impression par USB" - #~ 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." @@ -5391,278 +6276,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "UserAgreement" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Enregistre le G-Code dans une archive compressée." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Générateur de G-Code compressé" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Permet l'écriture de fichiers Ultimaker Format Package." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "Générateur UFP" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Fournit une étape de préparation dans Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Étape de préparation" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Permet le branchement hot-plug et l'écriture sur lecteur amovible." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Plugin de périphérique de sortie sur disque amovible" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Fournit une étape de surveillance dans Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Étape de surveillance" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Vérifie les mises à jour du firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Vérificateur des mises à jour du firmware" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Fournit la Vue simulation." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Vue simulation" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Lit le G-Code à partir d'une archive compressée." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Lecteur G-Code compressé" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Extension qui permet le post-traitement des scripts créés par l'utilisateur" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Post-traitement" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Crée un maillage effaceur pour bloquer l'impression du support en certains endroits" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Effaceur de support" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Envoie des informations anonymes sur le découpage. Peut être désactivé dans les préférences." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Information sur le découpage" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Offre la possibilité de lire et d'écrire des profils matériels basés sur XML." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Profils matériels" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Fournit la prise en charge de l'importation de profils à partir de versions Cura antérieures." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Lecteur de profil Cura antérieur" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Fournit la prise en charge de l'importation de profils à partir de fichiers g-code." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "Lecteur de profil G-Code" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Configurations des mises à niveau de Cura 3.2 vers Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Mise à niveau de 3.2 vers 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Configurations des mises à niveau de Cura 3.3 vers Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Mise à niveau de 3.3 vers 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Configurations des mises à niveau de Cura 2.5 vers Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Mise à niveau de 2.5 vers 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Met à niveau les configurations, de Cura 2.7 vers Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Mise à niveau de version, de 2.7 vers 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Configurations des mises à niveau de Cura 3.4 vers Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Mise à niveau de 3.4 vers 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Met à niveau les configurations, de Cura 3.0 vers Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Mise à niveau de version, de 3.0 vers 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Configurations des mises à niveau de Cura 2.6 vers Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Mise à niveau de 2.6 vers 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Configurations des mises à niveau de Cura 2.1 vers Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Mise à niveau vers 2.1 vers 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Configurations des mises à niveau de Cura 2.2 vers Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Mise à niveau de 2.2 vers 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Permet de générer une géométrie imprimable à partir de fichiers d'image 2D." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Lecteur d'images" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Fournit le lien vers l'arrière du système de découpage CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Système CuraEngine" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Fournit les paramètres par modèle." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Outil de paramètres par modèle" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Fournit la prise en charge de la lecture de fichiers 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "Lecteur 3MF" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Affiche une vue en maille solide normale." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Vue solide" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Permet le chargement et l'affichage de fichiers G-Code." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "Lecteur G-Code" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Fournit la prise en charge de l'exportation de profils Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Générateur de profil Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Permet l'écriture de fichiers 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "Générateur 3MF" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Fournit les actions de la machine pour les machines Ultimaker (telles que l'assistant de calibration du plateau, sélection des mises à niveau, etc.)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Actions de la machine Ultimaker" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Fournit la prise en charge de l'importation de profils Cura." - -#~ 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." @@ -5703,14 +6316,6 @@ msgstr "X3GWriter" #~ 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" @@ -5756,7 +6361,6 @@ msgstr "X3GWriter" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "Impossible d'exporter avec la qualité \"{}\" !\n" #~ "Qualité redéfinie sur \"{}\"." @@ -5933,7 +6537,6 @@ msgstr "X3GWriter" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "Certains modèles peuvent ne pas être imprimés de manière optimale en raison de la taille de l'objet et du matériau choisi pour les modèles : {model_names}.\n" #~ "Conseils utiles pour améliorer la qualité d'impression :\n" #~ "1) Utiliser des coins arrondis.\n" @@ -5950,7 +6553,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "Aucun modèle n'a été trouvé à l'intérieur de votre dessin. Pouvez-vous vérifier son contenu de nouveau et vous assurer qu'une pièce ou un assemblage est présent ?\n" #~ "\n" #~ "Merci !" @@ -5961,7 +6563,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Plus d'une pièce ou d'un assemblage ont été trouvés dans votre dessin. Nous ne prenons actuellement en charge que les dessins comptant une seule pièce ou un seul assemblage.\n" #~ "\n" #~ "Désolé !" @@ -5986,7 +6587,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Cher client,\n" #~ "Nous n'avons pas pu trouver une installation valide de SolidWorks sur votre système. Cela signifie soit que SolidWorks n'est pas installé, soit que vous ne possédez pas de licence valide. Veuillez vous assurer que l'exécution de SolidWorks lui-même fonctionne sans problèmes et / ou contactez votre service IT.\n" #~ "\n" @@ -6001,7 +6601,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Cher client,\n" #~ "Vous exécutez actuellement ce plug-in sur un système d'exploitation autre que Windows. Ce plug-in fonctionne uniquement sous Windows et lorsque SolidWorks est installé avec une licence valide. Veuillez installer ce plug-in sur un poste Windows où SolidWorks est installé.\n" #~ "\n" @@ -6106,7 +6705,6 @@ msgstr "X3GWriter" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Ouvrez le répertoire\n" #~ "contenant la macro et l'icône" @@ -6405,7 +7003,6 @@ msgstr "X3GWriter" #~ "\n" #~ " Thanks!." #~ msgstr "" - #~ "Aucun modèle n'a été trouvé à l'intérieur de votre dessin. Pouvez-vous vérifier son contenu de nouveau et vous assurer qu'une pièce ou un assemblage est présent ?\n" #~ "\n" #~ " Merci !" @@ -6416,7 +7013,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Plus d'une pièce ou d'un ensemble de pièces ont été trouvés dans votre dessin. Nous ne prenons actuellement en charge que les dessins comptant exactement une pièce ou un ensemble de pièces.\n" #~ "\n" #~ "Désolé !" @@ -6451,7 +7047,6 @@ msgstr "X3GWriter" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Une erreur fatale s'est produite. 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" #~ " " @@ -6618,7 +7213,6 @@ msgstr "X3GWriter" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Une exception fatale s'est produite. 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" #~ " " @@ -6765,7 +7359,6 @@ msgstr "X3GWriter" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Une erreur fatale que nous ne pouvons résoudre s'est produite !

\n" #~ "

Veuillez utiliser les informations ci-dessous pour envoyer un rapport d'erreur à http://github.com/Ultimaker/Cura/issues

\n" #~ " " @@ -6808,7 +7401,6 @@ msgstr "X3GWriter" #~ "You need to accept this license to install this plugin.\n" #~ "Do you agree with the terms below?" #~ msgstr "" - #~ " le plug-in contient une licence.\n" #~ "Vous devez approuver cette licence pour installer ce plug-in.\n" #~ "Acceptez-vous les clauses ci-dessous ?" @@ -7336,7 +7928,6 @@ msgstr "X3GWriter" #~ msgid "Print Selected Model with %1" #~ 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" #~ msgctxt "@info:status" @@ -7366,7 +7957,6 @@ msgstr "X3GWriter" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Une erreur fatale que nous ne pouvons résoudre s'est produite !

\n" #~ "

Nous espérons que cette image d'un chaton vous aidera à vous remettre du choc.

\n" #~ "

Veuillez utiliser les informations ci-dessous pour envoyer un rapport d'erreur à http://github.com/Ultimaker/Cura/issues

" diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index a2b3150f0d..da14c42d89 100644 --- a/resources/i18n/fr_FR/fdmextruder.def.json.po +++ b/resources/i18n/fr_FR/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: French\n" diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index 8e46a0175d..5e7190fc47 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: French\n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -233,7 +237,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 +247,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 +257,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 +267,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 +277,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 +307,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 +317,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 +337,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 +402,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 +422,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 +432,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 +442,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 +472,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 @@ -1219,7 +1223,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" @@ -1293,8 +1297,11 @@ 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 +1323,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 +1340,15 @@ 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" @@ -1631,7 +1645,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" @@ -1863,6 +1879,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 +1999,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 +2089,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 +2326,9 @@ 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" @@ -2153,6 +2380,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 +2581,15 @@ 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" @@ -2923,6 +3161,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 +3441,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,12 +3507,12 @@ 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" +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." @@ -3390,8 +3643,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" @@ -3769,14 +4022,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" @@ -3898,7 +4151,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" @@ -4270,16 +4525,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" @@ -4320,16 +4565,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" @@ -4340,6 +4575,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" @@ -4622,8 +4867,9 @@ 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" @@ -4855,6 +5101,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5112,8 +5368,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" @@ -5345,7 +5601,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" @@ -5454,7 +5712,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 @@ -5464,7 +5722,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 @@ -5474,7 +5732,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 @@ -5484,7 +5742,7 @@ 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" +msgid "Adaptive Layers Threshold" msgstr "Limite des couches adaptatives" #: fdmprinter.def.json @@ -5702,6 +5960,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5762,6 +6170,138 @@ 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 "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." @@ -5899,7 +6439,6 @@ msgstr "Matrice de transformation à appliquer au modèle lors de son chargement #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "Commandes Gcode à exécuter au tout début, séparées par \n" #~ "." @@ -5912,7 +6451,6 @@ msgstr "Matrice de transformation à appliquer au modèle lors de son chargement #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "Commandes Gcode à exécuter à la toute fin, séparées par \n" #~ "." @@ -5969,7 +6507,6 @@ msgstr "Matrice de transformation à appliquer au modèle lors de son chargement #~ "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 le contour et la première couche de l’impression.\n" #~ "Il s’agit de la distance minimale séparant le contour de l’objet. Si le contour a d’autres lignes, celles-ci s’étendront vers l’extérieur." diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 4d2ea5070b..07a73aa191 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:31+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Italian\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Impostazioni macchina" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistente modello 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,16 +70,6 @@ msgstr "" "

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 "Changelog" -msgstr "Registro modifiche" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Visualizza registro modifiche" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -95,37 +85,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Il profilo è stato appiattito e attivato." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "File AMF" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Stampa USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connesso tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -136,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "File X3g" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +142,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" @@ -206,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Errore" @@ -238,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Avvertenza" @@ -267,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unità rimovibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Stampa sulla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Stampa sulla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Collegato alla rete." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Stato di autenticazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Stato di autenticazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Riprova" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 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:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Accesso alla stampante accettato" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Richiesta di accesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Mancata corrispondenza della configurazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Invio dati alla stampante in corso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Invio dati" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizzazione con la stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Collegato alla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Dati inviati" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Visualizzazione in Controlla" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Stampa finita" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Vuoto" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Sconosciuto" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Stampa tramite Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Stampa tramite Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Collegato tramite Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Errore cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Impossibile esportare il processo di stampa." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Impossibile caricare i dati sulla stampante." @@ -541,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "oggi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Si è verificato un errore di collegamento al cloud." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Invio di un processo di stampa" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Invio dati al cluster remoto" +msgid "Uploading via Ultimaker Cloud" +msgstr "Caricamento tramite Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Collegato a Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Non chiedere nuovamente per questa stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Per iniziare" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Collegato!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Controlla collegamento" @@ -597,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Controlla" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Non è possibile accedere alle informazioni di aggiornamento." @@ -654,46 +654,11 @@ 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" msgstr "Profili Cura 15.04" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Valutazione" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -719,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Immagine GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -799,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Ugello" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Apri file progetto" @@ -826,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Dettagli codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -860,7 +825,7 @@ 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:121 +#: /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." @@ -921,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Anteprima" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parete esterna" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Pareti interne" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Rivestimento esterno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Riempimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Riempimento del supporto" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interfaccia supporto" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Supporto" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Spostamenti" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrazioni" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Altro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "File pre-sezionato {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Non supportato" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "File URL non valido:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Non sottoposto a override" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Impostazioni aggiornate" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Estrusore disabilitato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "Impossibile importare il profilo da {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profilo importato correttamente {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Profilo personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "File pre-sezionato {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Avanti" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Aggiungi" + +#: /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:109 #, python-brace-format @@ -1170,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tutti i file (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Sconosciuto" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Materiale personalizzato" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Personalizzata" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume di stampa" @@ -1201,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1223,7 +1239,7 @@ msgstr "Sistemazione oggetti" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1234,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Impossibile individuare posizione" @@ -1377,242 +1393,195 @@ msgstr "Registri" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Invia report" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Caricamento macchine in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Impostazione scena in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Caricamento interfaccia in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Impostazioni macchina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Stampante" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Impostazioni della stampante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Larghezza)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profondità)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altezza)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Forma del piano di stampa" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Origine al centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Piano riscaldato" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Versione codice G" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Impostazioni della testina di stampa" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Altezza gantry" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Numero di estrusori" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "Codice G avvio" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "Codice G fine" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /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:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Codice G fine estrusore" @@ -1622,7 +1591,7 @@ msgid "Install" msgstr "Installazione" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installa" @@ -1638,15 +1607,15 @@ msgid "ratings" msgstr "valori" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plugin" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiali" @@ -1656,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "I tuoi valori" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Sconosciuto" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1777,7 +1743,7 @@ 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" @@ -1863,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Recupero dei pacchetti..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1878,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Chiudi" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1969,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Caricamento in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Non disponibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Non raggiungibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Ferma" @@ -2010,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Senza titolo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anonimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Richiede modifiche di configurazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Dettagli" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Stampante non disponibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Primo disponibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Vetro" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2048,181 +1994,191 @@ msgstr "Coda di stampa" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Vai a Cura Connect" +msgid "Manage in browser" +msgstr "Gestisci nel browser" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Processi di stampa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Tempo di stampa totale" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "In attesa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Visualizza cronologia di stampa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Collegamento esistente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Collega alla stampante in rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:" +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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Aggiungi" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Modifica" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Rimuovi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Aggiorna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Collega" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Indirizzo IP non valido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Indirizzo stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Interr. in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Messa in pausa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Finisce %1 a %2" @@ -2326,44 +2282,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Override" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alluminio" @@ -2373,110 +2329,109 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Collega a una stampante" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Guida alle impostazioni Cura" + +#: /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." -msgstr "" -"Accertarsi che la stampante sia collegata:\n" -"- Controllare se la stampante è accesa.\n" -"- Controllare se la stampante è collegata alla rete." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "Selezionare una stampante collegata alla rete per controllare." +msgid "Please connect your printer to the network." +msgstr "Collegare la stampante alla rete." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Collegare la stampante Ultimaker alla rete locale." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Colore materiale" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /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/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Velocità" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Spessore strato" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modalità di compatibilità" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Spostamenti" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Helper" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Guscio" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Riempimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Superiore / Inferiore" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Parete interna" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2506,30 +2461,25 @@ 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 this data" -msgstr "Non desidero 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 this data to Ultimaker and help us improve Cura" -msgstr "Consenti l’invio di questi dati ad Ultimaker e aiutaci ad ottimizzare Cura" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Nessuna stampante selezionata" +msgid "Allow sending anonymous data" +msgstr "Consenti l'invio di dati anonimi" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2578,19 +2528,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." @@ -2704,7 +2654,7 @@ msgid "Printer Group" msgstr "Gruppo stampanti" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Impostazioni profilo" @@ -2717,19 +2667,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2810,6 +2760,7 @@ 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" @@ -2900,22 +2851,23 @@ msgid "Previous" msgstr "Precedente" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Esporta" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Avanti" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Suggerimento" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Generale" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2926,150 +2878,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Lista di controllo" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Seleziona gli aggiornamenti della stampante" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Blocco Olsson" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3120,170 +2973,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Importa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiale esportato correttamente su %1" @@ -3298,412 +3151,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Interfaccia" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Lingua:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 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:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seziona automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento del riquadro di visualizzazione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Visualizza sbalzo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoom verso la direzione del mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Rendering fotocamera: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Prospettiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Ortogonale" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Apertura e salvataggio file" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Ridimensiona i modelli troppo grandi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Ridimensiona i modelli eccessivamente piccoli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selezionare i modelli dopo il caricamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Chiedi sempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Apri sempre come progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importa sempre i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Profili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Elimina sempre le impostazioni modificate" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Controlla aggiornamenti all’avvio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Invia informazioni di stampa (anonime)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Ulteriori informazioni" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Sperimentale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 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:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Rinomina" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Crea profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplica profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Rinomina profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Importa profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Esporta profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Stampante: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Profili predefiniti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Profili personalizzati" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Elimina le modifiche correnti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Impostazioni globali" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Mercato" @@ -3746,12 +3624,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3766,33 +3644,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "impostazioni ricerca" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mantieni visibile questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configura visibilità delle impostazioni..." @@ -3808,27 +3686,32 @@ msgstr "" "\n" "Fare clic per rendere visibili queste impostazioni." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3839,7 +3722,7 @@ msgstr "" "\n" "Fare clic per ripristinare il valore del profilo." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3850,12 +3733,12 @@ msgstr "" "\n" "Fare clic per ripristinare il valore calcolato." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizzata" @@ -3870,27 +3753,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3907,8 +3785,8 @@ msgstr "Sono state modificate alcune impostazioni del profilo. Per modificarle, #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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à" +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3941,10 +3819,10 @@ msgstr "" "\n" "Fare clic per aprire la gestione profili." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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. Impossibile modificare il file codice G." +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" @@ -3976,7 +3854,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Invia codice G" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4073,11 +3951,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Preferiti" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Generale" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4093,32 +3966,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "S&tampante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "Ma&teriale" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Imposta come estrusore attivo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Abilita estrusore" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Disabilita estrusore" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "&Piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Profilo" @@ -4128,7 +4001,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posizione fotocamera" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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" @@ -4192,12 +4080,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Seleziona configurazione" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Vedere il grafico di compatibilità dei materiali" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Configurazioni" @@ -4222,17 +4105,17 @@ msgctxt "@label" msgid "Printer" msgstr "Stampante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 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." @@ -4252,42 +4135,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Ap&ri recenti" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /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:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Visualizza tipi" +msgid "View type" +msgstr "Visualizza tipo" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Ciao " +msgid "Object list" +msgstr "Elenco oggetti" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Esci" @@ -4297,11 +4185,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Accedi" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4312,11 +4195,11 @@ 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" +"- 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 materiale da marchi leader" +"- Ottieni l’accesso esclusivo ai profili di stampa dai principali marchi" #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 msgctxt "@button" @@ -4328,50 +4211,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Nessuna stima di tempo disponibile" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "Sezionamento impossibile" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Indicazioni di tempo" +msgid "Time estimation" +msgstr "Stima del tempo" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Specifiche materiale" +msgid "Material estimation" +msgstr "Stima del materiale" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4393,285 +4281,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Stampanti preimpostate" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Mercato" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Chiusura di Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Installa il pacchetto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Aggiungi stampante" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4733,37 +4635,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Crea nuovo profilo" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Aggiungi una stampante a Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Produttore" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Nome stampante" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Aggiungi stampante" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4923,27 +4794,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Salva progetto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Estrusore %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiale" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Materiale" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Salva" @@ -4973,30 +4849,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Importa i modelli" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Vedi solo il piano di stampa corrente" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Vuoto" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Sistema su tutti i piani di stampa" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Aggiungi una stampante" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Sistema il piano di stampa corrente" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Aggiungi una stampante in rete" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Aggiungi una stampante non in rete" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Aggiungi" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Nome stampante" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Fornisce un modo per modificare le impostazioni della macchina (come il volume di stampa, la dimensione ugello, ecc.)" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "Azione Impostazioni macchina" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Trova, gestisce ed installa nuovi pacchetti Cura." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Casella degli strumenti" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Fornisce la vista a raggi X." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Vista ai raggi X" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Fornisce il supporto per la lettura di file X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Lettore X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Scrive il codice G in un file." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "Writer codice G" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Controlla i modelli e la configurazione di stampa per eventuali problematiche di stampa e suggerimenti." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Fornisce azioni macchina per l’aggiornamento del firmware." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Aggiornamento firmware" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Crea un profilo appiattito di modifiche di qualità." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Appiattitore di profilo" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Fornisce il supporto per la lettura di file 3MF." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "Lettore 3MF" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Accetta i G-Code e li invia ad una stampante. I plugin possono anche aggiornare il firmware." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Stampa USB" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Scrive il codice G in un archivio compresso." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Writer codice G compresso" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Fornisce il supporto per la scrittura di pacchetti formato Ultimaker." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "Writer UFP" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Fornisce una fase di preparazione in Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Fase di preparazione" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Fornisce il collegamento a caldo dell'unità rimovibile e il supporto per la scrittura." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Connessione di rete UM3" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Guida alle impostazioni" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Fornisce una fase di controllo in Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Fase di controllo" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Controlla disponibilità di aggiornamenti firmware." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Controllo aggiornamento firmware" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Fornisce la vista di simulazione." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Vista simulazione" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Legge il codice G da un archivio compresso." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Lettore codice G compresso" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Estensione che consente la post-elaborazione degli script creati da utente" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Post-elaborazione" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Crea una maglia di cancellazione per bloccare la stampa del supporto in alcune posizioni" + +#: SupportEraser/plugin.json +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." +msgstr "Invia informazioni su sezionamento anonime Può essere disabilitato tramite le preferenze." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Informazioni su sezionamento" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Offre la possibilità di leggere e scrivere profili di materiali basati su XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Profili del materiale" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Fornisce supporto per l'importazione di profili dalle versioni legacy Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Lettore legacy profilo Cura" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Fornisce supporto per l'importazione di profili da file G-Code." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "Lettore profilo codice G" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Aggiorna le configurazioni da Cura 3.2 a Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Aggiornamento della versione da 3.2 a 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Aggiorna le configurazioni da Cura 3.3 a Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Aggiornamento della versione da 3.3 a 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Aggiorna le configurazioni da Cura 2.5 a Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Aggiornamento della versione da 2.5 a 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Aggiorna le configurazioni da Cura 2.7 a Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Aggiorna le configurazioni da Cura 3.4 a Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Aggiorna le configurazioni da Cura 3.0 a Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Aggiorna le configurazioni da Cura 2.6 a Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Aggiornamento della versione da 2.6 a 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Aggiorna le configurazioni da Cura 2.1 a Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Aggiornamento della versione da 2.1 a 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Aggiorna le configurazioni da Cura 2.2 a Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Aggiornamento della versione da 2.2 a 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Abilita la possibilità di generare geometria stampabile da file immagine 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Lettore di immagine" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Fornisce il collegamento al back-end di sezionamento CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Back-end CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Fornisce le impostazioni per modello." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Utilità impostazioni per modello" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Fornisce il supporto per la lettura di file 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Lettore 3MF" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Fornisce una normale visualizzazione a griglia compatta." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Visualizzazione compatta" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Consente il caricamento e la visualizzazione dei file codice G." + +#: GCodeReader/plugin.json +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." +msgstr "Fornisce supporto per l'esportazione dei profili Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Writer profilo Cura" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Assistente profilo di stampa" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Fornisce il supporto per la scrittura di file 3MF." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Fornisce azioni macchina per le macchine Ultimaker (come la procedura guidata di livellamento del piano di stampa, la selezione degli aggiornamenti, ecc.)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Azioni della macchina Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Fornisce supporto per l'importazione dei profili Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Lettore profilo Cura" + +#~ 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" @@ -5337,62 +6252,6 @@ msgstr "X3GWriter" #~ 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 "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Fornisce un modo per modificare le impostazioni della macchina (come il volume di stampa, la dimensione ugello, ecc.)" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Azione Impostazioni macchina" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Trova, gestisce ed installa nuovi pacchetti Cura." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Casella degli strumenti" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Fornisce la vista a raggi X." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Vista ai raggi X" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Fornisce il supporto per la lettura di file X3D." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "Lettore X3D" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Scrive il codice G in un file." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "Writer codice G" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Controlla i modelli e la configurazione di stampa per eventuali problematiche di stampa e suggerimenti." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Controllo modello" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Mostra le modifiche dall'ultima versione selezionata." @@ -5401,14 +6260,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "Registro modifiche" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Fornisce azioni macchina per l’aggiornamento del firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Aggiornamento firmware" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Crea un profilo appiattito." @@ -5417,14 +6268,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "Appiattitore di profilo" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Accetta i G-Code e li invia ad una stampante. I plugin possono anche aggiornare il firmware." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "Stampa USB" - #~ 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." @@ -5433,278 +6276,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "Contratto di licenza" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Scrive il codice G in un archivio compresso." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Writer codice G compresso" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Fornisce il supporto per la scrittura di pacchetti formato Ultimaker." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "Writer UFP" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Fornisce una fase di preparazione in Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Fase di preparazione" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Fornisce il collegamento a caldo dell'unità rimovibile e il supporto per la scrittura." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Plugin dispositivo di output unità rimovibile" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Fornisce una fase di controllo in Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Fase di controllo" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Controlla disponibilità di aggiornamenti firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Controllo aggiornamento firmware" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Fornisce la vista di simulazione." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Vista simulazione" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Legge il codice G da un archivio compresso." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Lettore codice G compresso" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Estensione che consente la post-elaborazione degli script creati da utente" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Post-elaborazione" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Crea una maglia di cancellazione per bloccare la stampa del supporto in alcune posizioni" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Cancellazione supporto" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Invia informazioni su sezionamento anonime Può essere disabilitato tramite le preferenze." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Informazioni su sezionamento" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Offre la possibilità di leggere e scrivere profili di materiali basati su XML." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Profili del materiale" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Fornisce supporto per l'importazione di profili dalle versioni legacy Cura." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Lettore legacy profilo Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Fornisce supporto per l'importazione di profili da file G-Code." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "Lettore profilo codice G" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Aggiorna le configurazioni da Cura 3.2 a Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Aggiornamento della versione da 3.2 a 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Aggiorna le configurazioni da Cura 3.3 a Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Aggiornamento della versione da 3.3 a 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Aggiorna le configurazioni da Cura 2.5 a Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Aggiornamento della versione da 2.5 a 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Aggiorna le configurazioni da Cura 2.7 a Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Aggiornamento della versione da 2.7 a 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Aggiorna le configurazioni da Cura 3.4 a Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Aggiornamento della versione da 3.4 a 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Aggiorna le configurazioni da Cura 3.0 a Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Aggiornamento della versione da 3.0 a 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Aggiorna le configurazioni da Cura 2.6 a Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Aggiornamento della versione da 2.6 a 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Aggiorna le configurazioni da Cura 2.1 a Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Aggiornamento della versione da 2.1 a 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Aggiorna le configurazioni da Cura 2.2 a Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Aggiornamento della versione da 2.2 a 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Abilita la possibilità di generare geometria stampabile da file immagine 2D." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Lettore di immagine" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Fornisce il collegamento al back-end di sezionamento CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Back-end CuraEngine" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Fornisce le impostazioni per modello." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Utilità impostazioni per modello" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Fornisce il supporto per la lettura di file 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "Lettore 3MF" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Fornisce una normale visualizzazione a griglia compatta." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Visualizzazione compatta" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Consente il caricamento e la visualizzazione dei file codice G." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "Lettore codice G" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Fornisce supporto per l'esportazione dei profili Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Writer profilo Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Fornisce il supporto per la scrittura di file 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "Writer 3MF" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Fornisce azioni macchina per le macchine Ultimaker (come la procedura guidata di livellamento del piano di stampa, la selezione degli aggiornamenti, ecc.)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Azioni della macchina Ultimaker" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Fornisce supporto per l'importazione dei profili Cura." - -#~ 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." @@ -5745,14 +6316,6 @@ msgstr "X3GWriter" #~ 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" diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index f3b5484cbf..79562add8e 100644 --- a/resources/i18n/it_IT/fdmextruder.def.json.po +++ b/resources/i18n/it_IT/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index 6a377af9a2..ace590cbfb 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Italian\n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -233,7 +237,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 +247,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 +257,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 +267,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 +277,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 +307,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 +317,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 +337,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 +402,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 +422,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 +432,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 +442,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 +472,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 @@ -1293,8 +1297,11 @@ 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 +1323,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 +1340,15 @@ 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" @@ -1631,7 +1645,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" @@ -1863,6 +1879,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 +1999,87 @@ 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 +2090,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,8 +2327,9 @@ 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." -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." +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 msgctxt "material_standby_temperature label" @@ -2153,6 +2381,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 +2582,15 @@ 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" @@ -2923,6 +3162,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 +3442,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,12 +3508,12 @@ 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" +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." @@ -3390,8 +3644,9 @@ 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" @@ -3769,14 +4024,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" @@ -3898,7 +4153,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" @@ -4270,16 +4527,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" @@ -4320,16 +4567,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" @@ -4340,6 +4577,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" @@ -4622,8 +4869,9 @@ 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" @@ -4855,6 +5103,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5112,8 +5370,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" @@ -5345,7 +5603,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" @@ -5454,7 +5714,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 @@ -5464,7 +5724,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 @@ -5474,7 +5734,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 @@ -5484,7 +5744,7 @@ msgstr "La differenza in altezza dello strato successivo rispetto al precedente. #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Threshold" msgstr "Soglia strati adattivi" #: fdmprinter.def.json @@ -5702,6 +5962,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5762,6 +6172,138 @@ 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 "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." @@ -5899,7 +6441,6 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "I comandi del Gcode da eseguire all’avvio, separati da \n" #~ "." @@ -5912,7 +6453,6 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "I comandi del Gcode da eseguire alla fine, separati da \n" #~ "." @@ -5969,7 +6509,6 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ "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.\n" #~ "Questa è la distanza minima, più linee di skirt aumenteranno tale distanza." diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index 80f7099e96..574fb89d7b 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -5,20 +5,20 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:39+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Japanese\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\n" +"PO-Revision-Date: 2019-07-29 16:09+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.1.1\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "プリンターの設定" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3Dモデルアシスタント" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,16 +70,6 @@ msgstr "" "

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

\n" "

印字品質ガイドを見る

" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Changelog" -msgstr "Changelog" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Changelogの表示" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -96,37 +86,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "プロファイルが平らになり、アクティベートされました。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF ファイル" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USBプリンティング" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "USBにて接続する" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -137,6 +126,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "X3Gファイル" +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 +msgctxt "X3G Writer File Description" +msgid "X3G File" +msgstr "X3Gファイル" + #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -149,6 +143,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フォーマットパッケージ" @@ -207,10 +202,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "エラー" @@ -239,9 +234,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -268,266 +263,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "リムーバブルドライブ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "ネットワーク上のプリント" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "ネットワークのプリント" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "ネットワーク上で接続。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "ネットワーク上で接続。プリントを操作するアクセス権がありません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "認証ステータス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "認証ステータス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "再試行" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "アクセスリクエストを再送信" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "プリンターへのアクセスが承認されました" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "アクセスのリクエスト" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "アクセスのリクエスト送信" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "新しいプリントジョブを開始できません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "ミスマッチの構成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" -msgstr "選択された構成にてプリントを開始してもいいですか。" +msgstr "選択された構成にてプリントを開始してもいいですか?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "プリンターにプリントデータを送信中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "プリントデータを送信中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "キャンセル" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "プリンターと同期する" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "ネットワーク上で接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 msgctxt "@info:status" msgid "Print job was successfully sent to the printer." msgstr "プリントジョブは正常にプリンターに送信されました。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "データを送信しました" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "モニター表示" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "プリント終了" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "空にする" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "不明" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "クラウドからプリントする" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "クラウドからプリントする" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "クラウドを使って接続しました" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "クラウドエラー" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "印刷ジョブをエクスポートできませんでした。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "データをプリンタにアップロードできませんでした。" @@ -542,48 +538,52 @@ msgctxt "@info:status" msgid "today" msgstr "本日" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "クラウドの接続時にエラーが発生しました。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "印刷ジョブ送信中" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "リモートクラスタにデータ送信中" +msgid "Uploading via Ultimaker Cloud" +msgstr "Ultimaker Cloud 経由でアップロード中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 msgctxt "@info:status" msgid "Send and monitor print jobs from anywhere using your Ultimaker account." msgstr "Ultimaker のアカウントを使用して、どこからでも印刷ジョブを送信およびモニターします。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Ultimaker Cloud に接続する" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "このプリンタでは次回から質問しない。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "はじめに" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 msgctxt "@info:status" msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." msgstr "Ultimaker のアカウントを使用して、どこからでも印刷ジョブを送信およびモニターできるようになりました。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "接続しました!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "接続の確認" @@ -598,7 +598,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "モニター" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "必要なアップデートの情報にアクセスできません。" @@ -655,46 +655,11 @@ 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" msgstr "Cura 15.04 プロファイル" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "評価" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -720,56 +685,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF画像" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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 "インフォメーション" @@ -800,19 +765,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "ノズル" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "プロジェクトファイルを開く" @@ -827,18 +792,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "G-codeの詳細" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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の表示が適切でない場合があります。" @@ -861,7 +826,7 @@ msgctxt "@info:backup_status" msgid "There was an error listing your backups." msgstr "バックアップのリスト作成時にエラーが発生しました。" -#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:121 +#: /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 "バックアップのリストア中にエラーが発生しました。" @@ -922,243 +887,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "プレビュー" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "アウターウォール" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "インナーウォール" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "スキン" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "インフィル" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "サポートイルフィル" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "サポートインターフェイス" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "サポート" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "スカート" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "移動" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "退却" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "他" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "スライス前ファイル {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "サポート対象外" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "無効なファイルのURL:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "上書きできません" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "設定が更新されました" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "エクストルーダーを無効にしました" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 msgctxt "@info:title" msgid "Export succeeded" msgstr "書き出し完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" -msgstr "{0}からプロファイルの取り込に失敗しました。" +msgstr "{0}からプロファイルの取り込に失敗しました:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "プロファイル {0}の取り込み完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "カスタムプロファイル" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "プロファイルはクオリティータイプが不足しています。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "スライス前ファイル {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "次" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +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:109 #, python-brace-format @@ -1171,23 +1154,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "全てのファイル" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "不明" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "カスタムフィラメント" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "カスタム" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "造形サイズ" @@ -1202,16 +1203,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Ultimaker アカウントサーバーに到達できません。" +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "このアプリケーションの許可において必要な権限を与えてください。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "ログイン時に予期しないエラーが発生しました。やり直してください。" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1224,7 +1240,7 @@ msgstr "造形データを配置" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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 "全ての造形物の造形サイズに対し、適切な位置が確認できません" @@ -1235,19 +1251,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "位置を確保できません" @@ -1378,242 +1394,195 @@ msgstr "ログ" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "レポート送信" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "プリンターを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "シーンをセットアップ中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "インターフェイスを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選択したモデルは読み込むのに小さすぎます。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "プリンターの設定" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "プリンター" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "プリンターの設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X(幅)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (奥行き)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (高さ)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "ビルドプレート形" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "センターを出します" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "ヒーテッドドベッド" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "G-codeフレーバー" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "プリントヘッド設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "最大X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "最大Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "ガントリーの高さ" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "エクストルーダーの数" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-Codeの開始" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "G-codeコマンドが最初に実行されるようにします。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "G-codeの終了" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "ノズルサイズ" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "適合する材料直径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷却ファンの番号" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "エクストルーダーがG-Codeを終了する" @@ -1623,7 +1592,7 @@ msgid "Install" msgstr "インストール" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "インストールした" @@ -1639,15 +1608,15 @@ msgid "ratings" 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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "プラグイン" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "マテリアル" @@ -1657,52 +1626,49 @@ msgctxt "@label" msgid "Your rating" msgstr "ユーザー評価" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "不明" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1778,7 +1744,7 @@ 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 "インストールした" @@ -1864,12 +1830,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "パッケージ取得中…" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "電子メール" @@ -1879,22 +1845,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "閉める" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1970,38 +1920,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "ガラス" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 msgctxt "@info" -msgid "These options are not available because you are monitoring a cloud printer." -msgstr "クラウドプリンタをモニタリングしている場合は、これらのオプションは利用できません。" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "キューをリモートで管理するには、プリンターのファームウェアを更新してください。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "読み込み中..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "利用不可" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "到達不能" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "アイドル" @@ -2011,37 +1963,31 @@ msgctxt "@label" msgid "Untitled" msgstr "無題" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "匿名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "構成の変更が必要です" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "詳細" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "利用できないプリンター" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "次の空き" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "ガラス" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2049,178 +1995,189 @@ msgstr "順番を待つ" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Cura Connectに移動する" +msgid "Manage in browser" +msgstr "ブラウザで管理する" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "プリントジョブ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "合計印刷時間" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "待ち時間" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "印刷履歴の表示" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "既存の接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "ネットワーク上で繋がったプリンターに接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "追加" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "以下のリストからプリンタを選択します:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "編集" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "取り除く" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "更新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "このアドレスのプリンターは応答していません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "無効なIPアドレス" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "プリンターアドレス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" 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:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "準備中..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "中止しています..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /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:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "%1 を %2 に終了します" @@ -2324,43 +2281,43 @@ msgctxt "@action:button" msgid "Override" msgstr "上書き" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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[0] "割り当てられたプリンター %1 には以下の構成変更が必要です:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "アルミニウム" @@ -2370,110 +2327,111 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "プリンターにつなぐ" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Cura 設定ガイド" + +#: /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." +"- 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" +"- プリンタの電源が入っているか確認します。\n" +"- プリンタがネットワークに接続されているかどうかを確認します。- クラウドに接続されたプリンタを検出するためにサインインしているかどうかを確認します。" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "モニターするプリンタが接続されているネットワークを選択してください。" +msgid "Please connect your printer to the network." +msgstr "プリンターをネットワークに接続してください。" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Ultimaker プリンタをローカルネットワークに接続してください。" - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "フィラメントの色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "ラインタイプ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "送り速度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "レイヤーの厚さ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "コンパティビリティモード" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "移動" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "ヘルプ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "外郭" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "インフィル" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "トップのレイヤーを表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "トップ/ボトム" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "インナーウォール" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "最小" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "最大" @@ -2503,30 +2461,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "Ultimakerへのデータ送信を許可し、Curaの改善を手助けする" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "プリンタが選択されていません" +msgid "Allow sending anonymous data" +msgstr "匿名データの送信を許可する" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2575,19 +2528,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." @@ -2701,7 +2654,7 @@ msgid "Printer Group" msgstr "プリンターグループ" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "プロファイル設定" @@ -2714,20 +2667,20 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "ネーム" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2809,6 +2762,7 @@ 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 "サインイン" @@ -2899,22 +2853,23 @@ msgid "Previous" msgstr "前" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "書き出す" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "次" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "ヒント" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "汎用" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2925,150 +2880,51 @@ msgctxt "@label" msgid "Checklist" msgstr "チェックリスト" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "プリンターアップグレードを選択する" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker 2." msgstr "このUltimaker2に施したアップグレードを選択してください。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Block" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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 "お持ちの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" @@ -3117,172 +2973,172 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "接着のインフォメーション" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "フィラメントの%1への書き出しが完了ました" @@ -3297,412 +3153,437 @@ 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:48 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:61 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:68 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:75 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:83 msgctxt "@title:column" msgid "Unit" msgstr "ユニット" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "一般" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "インターフェイス" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "言語:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "通貨:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "テーマ:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "セッティングを変更すると自動にスライスします。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動的にスライスする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "ビューポイント機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "ディスプレイオーバーハング" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "アイテムを選択するとカメラが中心にきます" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Curaのデフォルトのズーム機能は変更できるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "カメラのズーム方向を反転する。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "ズームはマウスの方向に動くべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "平行投影表示では、マウスの方向にズームする操作がサポートされていません。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "マウスの方向にズームする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "モデルの距離が離れているように確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動的にモデルをビルドプレートに落とす" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "G-codeリーダーに注意メッセージを表示します。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-codeリーダーに注意メッセージ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "レイヤーはコンパティビリティモードに強制されるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "レイヤービューコンパティビリティモードを強制する。(再起動が必要)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "どのような種類のカメラレンダリングを使用する必要がありますか?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "カメラレンダリング: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "パースペクティブ表示" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "平行投影表示" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "ファイルを開くまた保存" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "大きなモデルをスケールする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "極端に小さなモデルをスケールアップする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "モデルはロード後に選択しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "ロード後にモデルを選択" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "プリンターの敬称をジョブネームに加える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "プロジェクトファイルを保存時にサマリーを表示するべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "プロジェクトを保存時にダイアログサマリーを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "プロジェクトファイルを開く際のデフォルト機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "プロジェクトファイル開く際のデフォルト機能: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "毎回確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "常にプロジェクトとして開く" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "常にモデルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "常に変更した設定を廃棄する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "常に変更した設定を新しいプロファイルに送信する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "プライバシー" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "スタート時にアップデートあるかどうかのチェック" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(不特定な) プリントインフォメーションを送信" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "詳細" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "実験" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "マルチビルドプレート機能を使用" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "名を変える" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 msgctxt "@label" msgid "Create" msgstr "作成する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:105 msgctxt "@label" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:181 msgctxt "@title:window" msgid "Create Profile" msgstr "プロファイルを作る" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "このプロファイルの名前を指定してください。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "プロファイルを複製する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "プロファイル名を変える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "プロファイルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "プロファイルを書き出す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "プリンター:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "デフォルトプロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "カスタムプロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 msgctxt "@action:button" msgid "Update profile with current settings/overrides" -msgstr "プロファイルを現在のセッティング/" +msgstr "プロファイルを現在のセッティング" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "今の変更を破棄する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "設定は選択したプロファイルにマッチしています。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "グローバル設定" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "マーケットプレース" @@ -3745,12 +3626,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "ヘルプ" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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 "新しいプロジェクトを開始しますか?この作業では保存していない設定やビルドプレートをクリアします。" @@ -3765,33 +3646,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "検索設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "すべてのエクストルーダーの値をコピーする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "すべてのエクストルーダーに対して変更された値をコピーする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "この設定を非表示にする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "この設定を表示しない" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "常に見えるように設定する" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "視野のセッティングを構成する…" @@ -3806,27 +3687,32 @@ msgstr "" "いくらかの非表示設定は通常の計算された値と異なる値を使用します。\n" "表示されるようにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "この値は各エクストルーダーの値から取得します " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3836,7 +3722,7 @@ msgstr "" "この設定にプロファイルと異なった値があります。\n" "プロファイルの値を戻すためにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3846,12 +3732,12 @@ msgstr "" "このセッティングは通常計算されます、今は絶対値に固定されています。\n" "計算された値に変更するためにクリックを押してください。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "推奨" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "カスタム" @@ -3866,27 +3752,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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 "ブリムまたはラフトのプリントの有効化。それぞれ、プリントの周り、また造形物の下に底面を加え切り取りやすくします。" @@ -3903,8 +3784,8 @@ msgstr "プロファイルの設定がいくつか変更されました。変更 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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 "この品質プロファイルは現在の材料およびノズル構成では使用できません。この品質プロファイルを使用できるように変更してください" +msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +msgstr "この品質プロファイルは、現在の材料およびノズル構成では使用できません。この品質プロファイルを有効にするには、これらを変更してください。" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3936,10 +3817,10 @@ msgstr "" "いくらかの設定プロファイルにある値とことなる場合無効にします。\n" "プロファイルマネージャーをクリックして開いてください。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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 コードファイルは変更できません。" +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" @@ -3971,7 +3852,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "G-codeの送信" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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」を押してコマンドを送信します。" @@ -4068,11 +3949,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "お気に入り" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "汎用" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4088,32 +3964,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&フィラメント" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "アクティブエクストルーダーとしてセットする" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "エクストルーダーを有効にする" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "エクストルーダーを無効にする" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "ビルドプレート (&B)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&プロファイル" @@ -4123,7 +3999,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "カメラ位置 (&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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)" @@ -4187,12 +4078,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "構成の選択" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "材料の適合性チャートをご覧ください" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "構成" @@ -4217,17 +4103,17 @@ msgctxt "@label" msgid "Printer" msgstr "プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "フィラメント" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "この材料の組み合わせの接着に接着材を使用する。" @@ -4247,42 +4133,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "最近開いたファイルを開く" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "プリントをアクティベートする" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "ジョブネーム" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "プリント時間" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "残り時間" #: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" +msgid "View type" msgstr "タイプ表示" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "こんにちわ " +msgid "Object list" +msgstr "オブジェクトリスト" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "サインアウト" @@ -4292,11 +4183,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "サインイン" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4307,11 +4193,11 @@ 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" +"- Get exclusive access to print profiles from leading brands" msgstr "" -"- 印刷ジョブをローカルネットワークの外の Ultimaker プリンタに送信します\n" +"印刷ジョブをローカルネットワークの外の Ultimaker プリンタに送信します\n" "- Ultimaker Cura の設定をクラウドに保管してどこからでも利用できるようにします\n" -"- 有名ブランドから材料プロファイルへの例外アクセスを取得します" +"- 有名ブランドから印刷プロファイルへの例外アクセスを取得します" #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 msgctxt "@button" @@ -4323,50 +4209,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "時間予測がありません" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 msgctxt "@button" msgid "Preview" msgstr "プレビュー" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "スライスできません" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "時間仕様" +msgid "Time estimation" +msgstr "時間予測" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "材料仕様" +msgid "Material estimation" +msgstr "材料予測" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4388,285 +4279,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "プリンターのプリセット" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "プリンター管理" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "フィラメントを管理する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "モデルを消去する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&モデルを増倍する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&マーケットプレース" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura を閉じる" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura を終了しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "パッケージをインストール" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "ファイルを開く(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "プリンターを追加する" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +msgctxt "@title:window" +msgid "What's New" +msgstr "新情報" + # can’t enter japanese #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4684,7 +4589,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "プロファイル設定をカスタマイズしました。この設定をキープしますか、キャンセルしますか。" +msgstr "プロファイル設定をカスタマイズしました。この設定をキープしますか、キャンセルしますか?" #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -4726,37 +4631,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "新しいプロファイルを作る" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "プリンターを Cura に追加" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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プリンター」を使用して、次のダイアログでプリンターに合う設定に調整します。" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "製造元" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "プリンター名" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "プリンターについて" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4914,27 +4788,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "プロジェクトを保存" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "ビルドプレート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "エクストルーダー%1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1とフィラメント" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "材料" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存中のプロジェクトサマリーを非表示にする" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "保存" @@ -4964,30 +4843,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "モデルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "現在のビルドプレートのみを表示" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "空にする" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "すべてのビルドプレートに配置" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "プリンターの追加" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "現在のビルドプレートを配置" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "ネットワークプリンターの追加" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "非ネットワークプリンターの追加" + +#: /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/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "プリンターの IP アドレスを入力してください。" + +#: /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 "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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "プリンター名" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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 "はじめに" + +#: MachineSettingsAction/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ベースのプリンター)を読むプリンターをサポートできるようにします。" +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "プリンターの設定を変更(印刷ボリューム、ノズルサイズ、その他)" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "プリンターの設定アクション" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "新しいCuraパッケージを検索、管理、インストールします。" + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "ツールボックス" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "透視ビューイング。" + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "透視ビュー" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "X3Dファイルを読むこむためのサポートを供給する。" + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3Dリーダー" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "ファイルにG-codeを書き込みます。" + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "G-codeライター" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "プリント問題の可能性のあるモデルをプリント構成を確認し、解決案を提示してください。" + +#: ModelChecker/plugin.json +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モード" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "ファームウェアアップデートのためのマシン操作を提供します。" + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "ファームウェアアップデーター" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "プロファイルを変更するフラットエンドクオリティーを作成する。" + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "プロファイルフラッター" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "AMFファイルの読込みをサポートしています。" + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "AMFリーダー" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "G-codeを承認し、プリンターに送信する。またプラグインはファームウェアをアップデートできます。" + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USBプリンティング" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "圧縮ファイルにG-codeを書き込みます。" + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "圧縮G-codeライター" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Ultimakerフォーマットパッケージへの書き込みをサポートします。" + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "UFPライター" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Curaで準備ステージを提供します。" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "ステージの準備" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "取り外し可能なドライブホットプラギング及びサポートの書き出しの供給。" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "取り外し可能なドライブアウトプットデバイスプラグイン" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers." +msgstr "Ultimaker3のプリンターのネットワーク接続を管理する。" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3ネットワークコネクション" + +#: SettingsGuide/plugin.json +msgctxt "description" +msgid "Provides extra information and explanations about settings in Cura, with images and animations." +msgstr "画像とアニメーションで、Cura の設定に関する追加情報と説明を提供します。" + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "設定ガイド" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Curaでモニターステージを提供します。" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "モニターステージ" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "ファームウェアアップデートをチェックする。" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "ファームウェアアップデートチェッカー" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "シミュレーションビューを提供します。" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "シミュレーションビュー" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "圧縮ファイルからG-codeを読み取ります。" + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "圧縮G-codeリーダー" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "後処理のためにユーザーが作成したスクリプト用拡張子" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "後処理" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "特定箇所のサポートを印刷するブロックを消去するメッシュを作成する" + +#: SupportEraser/plugin.json +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." +msgstr "不特定なスライス情報を提出。プレファレンスの中で無効になる可能性もある。" + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "スライスインフォメーション" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "XMLベースフィラメントのプロファイルを読み書きするための機能を供給する。" + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "フィラメントプロファイル" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "レガシーCura Versionsからプロファイルを取り込むためのサポートを供給する。" + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "レガシーCuraプロファイルリーダー" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "g-codeファイルからプロファイルを読み込むサポートを供給する。" + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "G-codeプロファイルリーダー" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Cura 3.2からCura 3.3のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "3.2から3.3にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Cura 3.3からCura 3.4のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "3.3から3.4にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Cura 2.5 からCura 2.6のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "2.5から2.6にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Cura 2.7からCura 3.0のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Cura 3.4 から Cura 3.5 のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Cura 3.0からCura 3.1のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Cura 2.6 からCura 2.7のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "2.6から2.7にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Cura 2.1 からCura 2.2のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "2.1 から2.2にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Cura 2.2 からCura 2.4のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "2.2 から2.4にバージョンアップグレート" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "2Dの画像ファイルからプリント可能なジオメトリーを生成を可能にする。" + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "画像リーダー" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "CuraEngineスライシングバックエンドにリンクを供給する。" + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Curaエンジンバックエンド" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "各モデル設定を与える。" + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "各モデル設定ツール" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "3MFファイルを読むこむためのサポートを供給する。" + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MFリーダー" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "ノーマルなソリットメッシュビューを供給する。" + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "ソリッドビュー" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "G-codeファイルの読み込み、表示を許可する。" + +#: GCodeReader/plugin.json +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." +msgstr "Curaプロファイルを書き出すためのサポートを供給する。" + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Curaプロファイルライター" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +msgstr "材料メーカーがドロップインUIを使用して新しい材料と品質のプロファイルを作成できるようにします。" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "プリントプロファイルアシスタント" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "3MFファイルを読むこむためのサポートを供給する。" + +#: 3MFWriter/plugin.json +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.)." +msgstr "Ultimakerのプリンターのアクションを供給する(ベッドレベリングウィザード、アップグレードの選択、他)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimkerプリンターのアクション" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Curaプロファイルを取り込むためのサポートを供給する。" + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Curaプロファイルリーダー" + +#~ 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を修正" @@ -5328,62 +6246,6 @@ msgstr "X3GWriter" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "Ultimaker.comにてマテリアルのコンパティビリティを調べるためにクリック。" -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "プリンターの設定を変更(印刷ボリューム、ノズルサイズ、その他)" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "プリンターの設定アクション" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "新しいCuraパッケージを検索、管理、インストールします。" - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "ツールボックス" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "透視ビューイング。" - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "透視ビュー" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "X3Dファイルを読むこむためのサポートを供給する。" - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3Dリーダー" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "ファイルにG-codeを書き込みます。" - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "G-codeライター" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "プリント問題の可能性のあるモデルをプリント構成を確認し、解決案を提示してください。" - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ 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 "Shows changes since latest checked version." #~ msgstr "最新の更新バージョンの変更点を表示する。" @@ -5392,14 +6254,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "Changelog" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "ファームウェアアップデートのためのマシン操作を提供します。" - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "ファームウェアアップデーター" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "プロファイルを変更するフラットエンドクオリティーを作成する。" @@ -5408,14 +6262,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "プロファイルフラットナー" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "G-codeを承認し、プリンターに送信する。またプラグインはファームウェアをアップデートできます。" - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USBプリンティング" - #~ msgctxt "description" #~ msgid "Ask the user once if he/she agrees with our license." #~ msgstr "ライセンスに同意するかどうかユーザーに1回だけ確認する。" @@ -5424,278 +6270,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "UserAgreement" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "圧縮ファイルにG-codeを書き込みます。" - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "圧縮G-codeライター" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Ultimakerフォーマットパッケージへの書き込みをサポートします。" - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "UFPライター" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Curaで準備ステージを提供します。" - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "ステージの準備" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "取り外し可能なドライブホットプラギング及びサポートの書き出しの供給。" - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ 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 a monitor stage in Cura." -#~ msgstr "Curaでモニターステージを提供します。" - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "モニターステージ" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "ファームウェアアップデートをチェックする。" - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "ファームウェアアップデートチェッカー" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "シミュレーションビューを提供します。" - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "シミュレーションビュー" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "圧縮ファイルからG-codeを読み取ります。" - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "圧縮G-codeリーダー" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "後処理のためにユーザーが作成したスクリプト用拡張子" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "後処理" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "特定箇所のサポートを印刷するブロックを消去するメッシュを作成する" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "サポート消去機能" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "不特定なスライス情報を提出。プレファレンスの中で無効になる可能性もある。" - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "スライスインフォメーション" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "XMLベースフィラメントのプロファイルを読み書きするための機能を供給する。" - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "フィラメントプロファイル" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "レガシーCura Versionsからプロファイルを取り込むためのサポートを供給する。" - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "レガシーCuraプロファイルリーダー" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "g-codeファイルからプロファイルを読み込むサポートを供給する。" - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "G-codeプロファイルリーダー" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Cura 3.2からCura 3.3のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "3.2から3.3にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Cura 3.3からCura 3.4のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "3.3から3.4にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Cura 2.5 からCura 2.6のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "2.5から2.6にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Cura 2.7からCura 3.0のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "2.7から3.0にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Cura 3.4 から Cura 3.5 のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "3.4 から 3.5 にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Cura 3.0からCura 3.1のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "3.0から3.1にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Cura 2.6 からCura 2.7のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "2.6から2.7にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Cura 2.1 からCura 2.2のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "2.1 から2.2にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Cura 2.2 からCura 2.4のコンフィグレーションアップグレート。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "2.2 から2.4にバージョンアップグレート" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "2Dの画像ファイルからプリント可能なジオメトリーを生成を可能にする。" - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "画像リーダー" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "CuraEngineスライシングバックエンドにリンクを供給する。" - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Curaエンジンバックエンド" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "各モデル設定を与える。" - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "各モデル設定ツール" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "3MFファイルを読むこむためのサポートを供給する。" - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MFリーダー" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "ノーマルなソリットメッシュビューを供給する。" - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "ソリッドビュー" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "G-codeファイルの読み込み、表示を許可する。" - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "G-codeリーダー" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Curaプロファイルを書き出すためのサポートを供給する。" - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Curaプロファイルライター" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "3MFファイルを読むこむためのサポートを供給する。" - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MFリーダー" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Ultimakerのプリンターのアクションを供給する(ベッドレベリングウィザード、アップグレードの選択、他)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ultimkerプリンターのアクション" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Curaプロファイルを取り込むためのサポートを供給する。" - -#~ msgctxt "name" -#~ msgid "Cura Profile Reader" -#~ msgstr "Curaプロファイルリーダー" - #~ msgctxt "@warning:status" #~ msgid "Please generate G-code before saving." #~ msgstr "保存する前に G-code を生成してください。" @@ -5736,14 +6310,6 @@ msgstr "X3GWriter" #~ 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でプリントする" diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index 83cbdd0515..3454139715 100644 --- a/resources/i18n/ja_JP/fdmextruder.def.json.po +++ b/resources/i18n/ja_JP/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Japanese\n" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index 05cda76519..a99e608a93 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -5,18 +5,18 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Japanese\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+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.3\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" @@ -251,7 +255,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 +265,7 @@ msgstr "有効なエクストルーダートレインの数(ソフトウェア #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "ノズル外径" # msgstr "ノズル外径" @@ -272,7 +276,7 @@ msgstr "ノズルの外径。" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "ノズル長さ" # msgstr "ノズルの長さ" @@ -283,7 +287,7 @@ msgstr "ノズル先端とプリントヘッドの最下部との高さの差。 #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "ノズル角度" # msgstr "ノズル角度" @@ -294,7 +298,7 @@ msgstr "水平面とノズル直上の円錐部分との間の角度。" #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "ノズル加熱長さ" # msgstr "加熱範囲" @@ -325,7 +329,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 +339,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 +359,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 +429,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 +451,7 @@ msgstr "ノズルが入ることができない領域を持つポリゴンのリ #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "プリントヘッドポリゴン" #: fdmprinter.def.json @@ -458,7 +461,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 +471,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 +502,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 @@ -1322,7 +1325,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 +1344,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 +1372,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 +1391,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" @@ -1705,7 +1713,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" @@ -1807,7 +1817,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" @@ -1944,6 +1956,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" @@ -2054,6 +2076,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" @@ -2064,6 +2166,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" @@ -2181,8 +2403,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" @@ -2234,6 +2456,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" @@ -2428,14 +2660,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" @@ -3014,6 +3246,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" @@ -3289,6 +3531,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" @@ -3351,12 +3598,12 @@ 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" +msgctxt "support_infill_angles description" msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." msgstr "対応するインフィルラインの向きです。サポートインフィルパターンは平面で回転します。" @@ -3488,8 +3735,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" @@ -3888,14 +4135,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" @@ -4023,7 +4270,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" @@ -4395,16 +4644,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" @@ -4445,16 +4684,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" @@ -4465,6 +4694,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" @@ -4750,11 +4989,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" @@ -4774,7 +5012,7 @@ msgstr "実験" #: fdmprinter.def.json msgctxt "experimental description" msgid "experimental!" -msgstr "実験的" +msgstr "実験的!" #: fdmprinter.def.json msgctxt "support_tree_enable label" @@ -4992,6 +5230,16 @@ 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." +msgstr "最大解像度設定の解像度を下げるときに許容される最大偏差です。これを大きくすると、印刷の精度は低くなりますが、g-code は小さくなります。" + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5260,8 +5508,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" @@ -5602,7 +5850,7 @@ msgstr "ノズルと水平方向に下向きの線間の距離。大きな隙間 #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "適応レイヤーの使用" #: fdmprinter.def.json @@ -5612,7 +5860,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 @@ -5622,7 +5870,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 @@ -5632,8 +5880,8 @@ msgstr "次のレイヤーの高さを前のレイヤーの高さと比べた差 #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "適応レイヤー閾値" +msgid "Adaptive Layers Threshold" +msgstr "適応レイヤーしきい値" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5850,6 +6098,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5910,6 +6308,142 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "ファイルから読み込むときに、モデルに適用するトランスフォーメーションマトリックス。" +#~ 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 "スキンと壁のオーバーラップ量 (スキンライン幅に対する%)。少しのオーバーラップによって壁がスキンにしっかりつながります。これは、スキンライン幅の平均ライン幅と最内壁の%です。" @@ -6055,7 +6589,6 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "Gcodeのコマンドは −で始まり\n" #~ "で区切られます。" @@ -6069,7 +6602,6 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "Gcodeのコマンドは −で始まり\n" #~ "で区切られます。" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index e27a6a05c6..2c2a37ad1b 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -5,20 +5,20 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:40+0100\n" -"Last-Translator: Korean \n" -"Language-Team: Jinbum Kim , Korean \n" +"POT-Creation-Date: 2019-07-16 14:38+0200\n" +"PO-Revision-Date: 2019-07-29 16:09+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.1.1\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "기기 설정" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D 모델 도우미" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,16 +70,6 @@ msgstr "" "

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

\n" "

인쇄 품질 가이드 보기

" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Changelog" -msgstr "변경 내역" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "변경 내역 표시" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -95,37 +85,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "프로파일이 병합되고 활성화되었습니다." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 파일" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB를 통해 연결" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -136,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "X3g 파일" +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 +msgctxt "X3G Writer File Description" +msgid "X3G File" +msgstr "X3G 파일" + #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +142,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 포맷 패키지" @@ -206,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "오류" @@ -238,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "경고" @@ -267,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "이동식 드라이브" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "네트워크를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "네트워크를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "네트워크를 통해 연결됨." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "네트워크를 통해 연결되었습니다. 프린터를 제어할 수 있는 권한이 없습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "인증 상태" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "인증 상태" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "재시도" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "접근 요청 다시 보내기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "허용 된 프린터에 대한 접근 허용" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "접근 요청" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "프린터에 접근 요청 보내기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "새 프린팅 작업을 시작할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "일치하지 않는 구성" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "선택한 구성으로 프린팅 하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "프린터로 데이터 보내기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "데이터 전송 중" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "취소" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "프린터와 동기화" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "네트워크를 통해 연결됨" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 msgctxt "@info:status" msgid "Print job was successfully sent to the printer." msgstr "출력 작업이 프린터에 성공적으로 보내졌습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "데이터 전송 됨" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "모니터에서 보기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "프린팅이 완료됨" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "비어 있음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "알 수 없음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Cloud를 통해 인쇄" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Cloud를 통해 인쇄" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Cloud를 통해 연결됨" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Cloud 오류" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "인쇄 작업을 내보낼 수 없음." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "데이터를 프린터로 업로드할 수 없음." @@ -541,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "오늘" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Cloud 연결 시 오류가 있었습니다." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "인쇄 작업 전송" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "원격 클러스터로 데이터 전송 중" +msgid "Uploading via Ultimaker Cloud" +msgstr "Ultimaker Cloud를 통해 업로드하는 중" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 msgctxt "@info:status" msgid "Send and monitor print jobs from anywhere using your Ultimaker account." msgstr "Ultimaker 계정을 사용하여 어디에서든 인쇄 작업을 전송하고 모니터링하십시오." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Ultimaker Cloud에 연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "이 프린터에 대해 다시 물어보지 마십시오." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "시작하기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 msgctxt "@info:status" msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." msgstr "이제 Ultimaker 계정을 사용하여 어디에서든 인쇄 작업을 전송하고 모니터링할 수 있습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "연결됨!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "연결 검토" @@ -597,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "모니터" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "업데이트 정보에 액세스 할 수 없습니다." @@ -654,46 +654,11 @@ 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" msgstr "Cura 15.04 프로파일" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "평가" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -719,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 이미지" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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 "정보" @@ -799,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "노즐" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "프로젝트 파일 열기" @@ -826,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "G-코드 세부 정보" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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-코드가 정확하지 않을 수 있습니다." @@ -860,7 +825,7 @@ msgctxt "@info:backup_status" msgid "There was an error listing your backups." msgstr "백업 열거 중 오류가 있었습니다." -#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:121 +#: /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 "백업 복원 시도 중 오류가 있었습니다." @@ -921,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "미리 보기" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "외벽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "내벽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "스킨" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "내부채움" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "내부채움 서포트" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "지원하는 인터페이스" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "서포트" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "스커트" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "움직임 경로" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "리트랙션" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "다른" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "미리 슬라이싱한 파일 {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "지원되지 않음" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "유효하지 않은 파일 URL:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "재정의되지 않음" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "설정이 업데이트되었습니다" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "익스트루더 비활성화됨" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 msgctxt "@info:title" msgid "Export succeeded" msgstr "내보내기 완료" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "{0}에서 프로파일을 가져오지 못했습니다:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "프로파일 {0}을 성공적으로 가져 왔습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "사용자 정의 프로파일" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "프로파일에 품질 타입이 누락되었습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "미리 슬라이싱한 파일 {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "다음" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +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:109 #, python-brace-format @@ -1170,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "모든 파일 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "알 수 없는" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "사용자 정의 소재" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "사용자 정의" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "출력물 크기" @@ -1201,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Ultimaker 계정 서버에 도달할 수 없음." +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "이 응용 프로그램을 인증할 때 필요한 권한을 제공하십시오." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "로그인을 시도할 때 예기치 못한 문제가 발생했습니다. 다시 시도하십시오." + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1223,7 +1239,7 @@ msgstr "개체 배치 중" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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 "모든 개체가 출력할 수 있는 최대 사이즈 내에 위치할 수 없습니다" @@ -1234,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "위치를 찾을 수 없음" @@ -1377,242 +1393,195 @@ msgstr "로그" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "보고서 전송" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "기기로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "장면 설정 중..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "인터페이스 로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "선택한 모델이 너무 작아서 로드할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "기기 설정" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "프린터" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "프린터 설정" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (너비)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (깊이)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (높이)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "빌드 플레이트 모양" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "중앙이 원점" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "히트 베드" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Gcode 유형" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "프린트헤드 설정" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X 최소값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y 최소값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X 최대값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y 최대값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "갠트리 높이" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "익스트루더의 수" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" -msgstr "시작 Gcode" +msgstr "시작 GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "시작시 Gcode 명령이 실행됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" -msgstr "종료 Gcode" +msgstr "End GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "노즐 크기" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "호환되는 재료의 직경" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "냉각 팬 번호" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "익스트루더 종료 Gcode" @@ -1622,7 +1591,7 @@ msgid "Install" msgstr "설치" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "설치됨" @@ -1638,15 +1607,15 @@ msgid "ratings" 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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "플러그인" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "재료" @@ -1656,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "귀하의 평가" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "알 수 없는" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1777,7 +1743,7 @@ 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 "설치됨" @@ -1863,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "패키지 가져오는 중..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "이메일" @@ -1878,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "닫기" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1969,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "유리" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 msgctxt "@info" -msgid "These options are not available because you are monitoring a cloud printer." -msgstr "Cloud 프린터를 모니터링하고 있기 때문에 이 옵션을 사용할 수 없습니다." +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "대기열을 원격으로 관리하려면 프린터 펌웨어를 업데이트하십시오." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "로딩 중..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "사용불가" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "연결할 수 없음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "대기 상태" @@ -2010,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "제목 없음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "익명" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "구성 변경 필요" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "세부 사항" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "사용할 수 없는 프린터" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "첫 번째로 사용 가능" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "유리" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2048,181 +1994,189 @@ msgstr "대기 중" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Cura Connect로 이동" +msgid "Manage in browser" +msgstr "브라우저에서 관리" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "인쇄 작업" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "총 인쇄 시간" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "대기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "인쇄 내역 보기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "기존 연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "네트워크 프린터에 연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "추가" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "아래 목록에서 프린터를 선택하십시오:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "편집" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "제거" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "새로고침" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "이 주소의 프린터가 아직 응답하지 않았습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "잘못된 IP 주소" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "프린터 주소" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" 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:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "준비 중..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "중지 중…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /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:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "%2에서 %1 완료" @@ -2326,43 +2280,43 @@ msgctxt "@action:button" msgid "Override" msgstr "무시하기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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[0] "할당된 프린터 %1의 구성을 다음과 같이 변경해야 합니다:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "알루미늄" @@ -2372,110 +2326,110 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "프린터에 연결" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Cura 설정 가이드" + +#: /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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "네트워크 연결 프린터를 선택하여 모니터링하십시오." +msgid "Please connect your printer to the network." +msgstr "프린터를 네트워크에 연결하십시오." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Ultimaker 프린터를 로컬 네트워크에 연결하십시오." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "재료 색상" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "라인 유형" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "이송 속도" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "레이어 두께" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "호환 모드" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "이동" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "도움말" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "외곽" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "내부채움" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "상단 레이어 만 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "위 / 아래" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "내벽" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "최소" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "최대" @@ -2505,30 +2459,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "이 데이터를 Ultimaker에 전송해 Cura 개선에 도움을 주고 싶습니다" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "선택한 인쇄 없음" +msgid "Allow sending anonymous data" +msgstr "익명 데이터 전송 허용" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2577,19 +2526,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." @@ -2703,7 +2652,7 @@ msgid "Printer Group" msgstr "프린터 그룹" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "프로파일 설정" @@ -2716,19 +2665,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "이름" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 msgctxt "@action:label" msgid "Not in profile" msgstr "프로파일에 없음" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2807,6 +2756,7 @@ 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 "로그인" @@ -2897,22 +2847,23 @@ msgid "Previous" msgstr "이전" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "내보내기" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "다음" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "팁" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "일반" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2923,150 +2874,51 @@ msgctxt "@label" msgid "Checklist" msgstr "체크리스트" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "프린터 업그레이드 선택" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker 2." msgstr "이 Ultimaker 2 업그레이드를 선택하십시오." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Block" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3117,170 +2969,170 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "프린팅를 중단 하시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "접착 정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "가져오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "재료를 성공적으로 내보냈습니다" @@ -3295,412 +3147,437 @@ 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:48 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:61 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:68 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:75 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:83 msgctxt "@title:column" msgid "Unit" msgstr "단위" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "일반" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "인터페이스" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "언어:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "통화:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "테마:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "설정이 변경되면 자동으로 슬라이싱 합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "자동으로 슬라이싱" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "뷰포트 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "오버행 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "항목을 선택하면 카메라를 중앙에 위치" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "큐라의 기본 확대 동작을 반전시켜야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "카메라 줌의 방향을 반전시키기." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "확대가 마우스 방향으로 이동해야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "직교 시점에서는 마우스 방향으로 확대가 지원되지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "마우스 방향으로 확대" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "모델이 분리되어 있는지 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "모델을 빌드 플레이트에 자동으로 놓기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "g-code 리더에 주의 메시지를 표시하기." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "g-code 리더의 주의 메시지" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "레이어가 호환 모드로 강제 설정되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "레이어 뷰 호환성 모드로 전환 (다시 시작해야 함)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "어떤 유형의 카메라 렌더링을 사용해야 합니까?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "카메라 렌더링: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "원근" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "직교" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "파일 열기 및 저장" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "큰 모델의 사이즈 수정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "매우 작은 모델의 크기 조정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "모델을 로드한 후에 선택해야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "로드된 경우 모델 선택" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "작업 이름에 기기 접두어 추가" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "프로젝트 파일을 저장할 때 요약이 표시되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "프로젝트 저장시 요약 대화 상자 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "프로젝트 파일을 열 때 기본 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "프로젝트 파일을 열 때 기본 동작 " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "항상 묻기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "항상 프로젝트로 열기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "항상 모델 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "항상 변경된 설정 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "항상 변경된 설정을 새 프로파일로 전송" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "보안" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "시작시 업데이트 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(익명) 프린터 정보 보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "추가 정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "실험적 설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "다수의 빌드 플레이트 사용하기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "이름 바꾸기" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 msgctxt "@label" msgid "Create" msgstr "생성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:105 msgctxt "@label" msgid "Duplicate" msgstr "복제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:181 msgctxt "@title:window" msgid "Create Profile" msgstr "프로파일 생성하기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "이 프로파일에 대한 이름을 제공하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "프로파일 복제하기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "프로파일 이름 바꾸기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "프로파일 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "프로파일 내보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "프린터: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "기본 프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "사용자 정의 프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "현재 설정 / 재정의 프로파일 업데이트" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "현재 변경 사항 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "현재 설정이 선택한 프로파일과 일치합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "전역 설정" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "시장" @@ -3743,12 +3620,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "도움말(&H)" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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 "새 프로젝트를 시작 하시겠습니까? 빌드 플레이트 및 저장하지 않은 설정이 지워집니다." @@ -3763,33 +3640,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "검색 설정" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "모든 익스트루더에 값 복사" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "변경된 사항을 모든 익스트루더에 복사" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "이 설정 숨기기" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "이 설정을 표시하지 않음" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "이 설정을 계속 표시하십시오" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "설정 보기..." @@ -3805,27 +3682,32 @@ msgstr "" "\n" "이 설정을 표시하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "이 값은 익스트루더마다 결정됩니다 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3836,7 +3718,7 @@ msgstr "" "\n" "프로파일 값을 복원하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3847,12 +3729,12 @@ msgstr "" "\n" "계산 된 값을 복원하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "추천" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "사용자 정의" @@ -3867,27 +3749,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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 "브림이나 라프트를 사용합니다. 이렇게하면 출력물 주변이나 아래에 평평한 영역이 추가되어 나중에 쉽게 자를 수 있습니다." @@ -3904,8 +3781,8 @@ msgstr "일부 프로파일 설정을 수정했습니다. 이러한 설정을 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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 "현재 재료 및 노즐 구성에 대해 이 품질 프로파일을 사용할 수 없습니다. 이 품질 프로파일을 활성화하려면 이를 변경하십시오" +msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +msgstr "현재 재료 및 노즐 구성에 대해 이 품질 프로파일을 사용할 수 없습니다. 이 품질 프로파일을 활성화하려면 이를 변경하십시오." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3938,9 +3815,9 @@ msgstr "" "\n" "프로파일 매니저를 열려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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." +msgid "Print setup disabled. G-code file can not be modified." msgstr "인쇄 설정 비활성화됨. G 코드 파일을 수정할 수 없습니다." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 @@ -3973,7 +3850,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Gcode 보내기" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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’키를 눌러 명령을 전송하십시오." @@ -4070,11 +3947,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "즐겨찾기" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "일반" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4090,32 +3962,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "프린터(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "재료(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "활성 익스트루더로 설정" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "익스트루더 사용" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "익스트루더 사용하지 않음" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "빌드 플레이트(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "프로파일(&P)" @@ -4125,7 +3997,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "카메라 위치(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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)" @@ -4187,12 +4074,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "구성 선택" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "재료 호환성 차트 보기" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "구성" @@ -4217,17 +4099,17 @@ msgctxt "@label" msgid "Printer" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "재료" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "더 나은 접착력을 위해 이 재료 조합과 함께 접착제를 사용하십시오.." @@ -4247,42 +4129,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "최근 열어본 파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "활성화된 프린트" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "작업 이름" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "프린팅 시간" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "예상 남은 시간" #: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" +msgid "View type" msgstr "유형 보기" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "안녕하세요 " +msgid "Object list" +msgstr "개체 목록" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "로그아웃" @@ -4292,11 +4179,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "로그인" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4307,11 +4189,11 @@ 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" +"- 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" @@ -4323,50 +4205,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "시간 추산 이용 불가" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 msgctxt "@button" msgid "Preview" msgstr "미리 보기" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "슬라이스 할 수 없음" +msgid "Unable to slice" +msgstr "슬라이스 할 수 없습니다" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "시간 사양" +msgid "Time estimation" +msgstr "시간 추산" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "재료 사양" +msgid "Material estimation" +msgstr "재료 추산" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4388,282 +4275,296 @@ msgctxt "@label" msgid "Preset printers" msgstr "프린터 사전 설정" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "프린터 관리" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "재료 관리..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "모델 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "모델 복제..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&시장" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "설정" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura 닫기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura를 정말로 종료하시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "패키지 설치" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "프린터 추가" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4724,37 +4625,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "새 프로파일 만들기" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Cura에 프린터 추가" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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 프린터\"를 사용하고 다음 대화 상자의 프린터와 일치하도록 설정을 조정하십시오." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "제조업체" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "프린터 이름" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "프린터 추가" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4914,27 +4784,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "프로젝트 저장" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "빌드 플레이트" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "%1익스트루더" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & 재료" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "재료" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "프로젝트 요약을 다시 저장하지 마십시오" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "저장" @@ -4964,30 +4839,1067 @@ msgctxt "@action:button" msgid "Import models" msgstr "모델 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "현재의 빌드 플레이트만 보기" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "비어 있음" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "모든 빌드 플레이트 정렬" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "현재의 빌드 플레이트 정렬" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "네트워크 프린터 추가" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "비 네트워크 프린터 추가" + +#: /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/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "프린터의 IP 주소를 입력하십시오." + +#: /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 "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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "프린터 이름" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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 "시작하기" + +#: MachineSettingsAction/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 기반 프린터)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "기계 설정 (예 : 빌드 볼륨, 노즐 크기 등)을 변경하는 방법을 제공합니다." -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "컴퓨터 설정 작업" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "새 Cura 패키지를 찾고, 관리하고 설치하십시오." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "도구 상자" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "엑스레이 뷰를 제공합니다." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "엑스레이 뷰" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "X3D 파일을 읽을 수 있도록 지원합니다." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D 리더" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "G Code를 파일에 씁니다." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "GCode 작성자" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "가능한 프린팅 문제를 위해 모델 및 인쇄 구성을 확인하고 제안합니다." + +#: ModelChecker/plugin.json +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 모드" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "펌웨어 업데이트를 위한 기계 동작을 제공합니다." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "펌웨어 업데이터" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "평평한 품질 변경 프로필을 만듭니다." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "프로필 플래트너" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "AMF 파일 읽기가 지원됩니다." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "AMF 리더" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "G-코드를 수신하고 프린터로 보냅니다. 플러그인은 또한 펌웨어를 업데이트 할 수 있습니다." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB 프린팅" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "압축 된 아카이브에 g-code를 씁니다." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "압축 된 G 코드 작성기" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Ultimaker 포맷 패키지 작성을 지원합니다." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "UFP 작성자" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Cura에서 준비 단계 제공." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "준비 단계" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "이동식 드라이브를 제공합니다." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "이동식 드라이브 출력 장치 플러그인" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers." +msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3 네트워크 연결" + +#: SettingsGuide/plugin.json +msgctxt "description" +msgid "Provides extra information and explanations about settings in Cura, with images and animations." +msgstr "이미지 및 애니메이션과 함께 Cura 설정에 대한 추가 정보와 설명을 제공합니다." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "설정 가이드" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Cura에서 모니터 단계 제공." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "모니터 단계" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "펌웨어 업데이트를 확인합니다." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "펌웨어 업데이트 검사기" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "시뮬레이션 뷰를 제공합니다." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "시뮬레이션 뷰" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "압축 된 아카이브로 부터 g-code를 읽습니다." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "압축 된 G 코드 리더기" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "후처리를 위해 사용자가 만든 스크립트를 허용하는 확장 프로그램" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "후처리" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "특정 장소에서 서포트 프린팅을 막는 지우개 메쉬(eraser mesh)를 만듭니다" + +#: SupportEraser/plugin.json +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." +msgstr "익명의 슬라이스 정보를 제출하십시오. 환경 설정을 통해 비활성화 할 수 있습니다." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "슬라이스 정보" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "XML 기반 재료 프로파일을 읽고 쓸 수있는 기능을 제공합니다." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "재료 프로파일" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "레거시 Cura 버전에서 프로파일 가져 오기를 지원합니다." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "레거시 Cura 프로파일 리더" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "G-코드 파일에서 프로파일 가져 오기를 지원합니다." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "GCode 프로파일 리더기" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Cura 3.2에서 Cura 3.3으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "3.2에서 3.3으로 버전 업그레이드" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Cura 3.3에서 Cura 3.4로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "버전 업그레이드 3.3에서 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Cura 2.5에서 Cura 2.6으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "2.5에서 2.6으로 버전 업그레이드" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Cura 2.7에서 Cura 3.0으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Cura 3.4에서 Cura 3.5로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Cura 3.0에서 Cura 3.1로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Cura 2.6에서 Cura 2.7로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "2.6에서 2.7으로 버전 업그레이드" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Cura 2.1에서 Cura 2.2로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "2.1에서 2.2로 버전 업그레이드" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Cura 2.2에서 Cura 2.4로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "2.2에서 2.4로 버전 업그레이드" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "2D 이미지 파일에서 프린팅 가능한 지오메트리를 생성 할 수 있습니다." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "이미지 리더" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "CuraEngine 슬라이스 백엔드 링크를 제공합니다." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine 백엔드" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "모델 별 설정을 제공합니다." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "모델 별 설정 도구" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "3MF 파일 읽기 지원." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF 리더" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "일반 솔리드 메쉬보기를 제공합니다." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "솔리드 뷰" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "G-코드 파일을 로드하고 표시 할 수 있습니다." + +#: GCodeReader/plugin.json +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." +msgstr "Cura 프로파일 내보내기 지원을 제공합니다." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura 프로파일 작성자" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +msgstr "재료 제조사가 드롭 인 UI를 사용하여 새로운 재료와 품질 프로파일을 만들 수 있게 합니다." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "프린트 프로파일 어시스턴트" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "3MF 파일 작성 지원을 제공합니다." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Ultimaker 기계에 대한 기계 작동 제공(예 : 침대 수평 조정 마법사, 업그레이드 선택 등)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker 기기 동작" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Cura 프로파일 가져 오기 지원을 제공합니다." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura 프로파일 리더" + +#~ 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 코드 수정" @@ -5328,62 +6240,6 @@ msgstr "X3GWriter" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "Ultimaker.com의 재료 호환성을 확인하려면 클릭하십시오." -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "기계 설정 (예 : 빌드 볼륨, 노즐 크기 등)을 변경하는 방법을 제공합니다." - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "컴퓨터 설정 작업" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "새 Cura 패키지를 찾고, 관리하고 설치하십시오." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "도구 상자" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "엑스레이 뷰를 제공합니다." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "엑스레이 뷰" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "X3D 파일을 읽을 수 있도록 지원합니다." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3D 리더" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "G Code를 파일에 씁니다." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "GCode 작성자" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "가능한 프린팅 문제를 위해 모델 및 인쇄 구성을 확인하고 제안합니다." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ 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 "Shows changes since latest checked version." #~ msgstr "최신 체크 버전 이후로 변경 사항을 표시합니다." @@ -5392,14 +6248,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "변경 내역" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "펌웨어 업데이트를 위한 기계 동작을 제공합니다." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "펌웨어 업데이터" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Create a flattend quality changes profile." @@ -5408,14 +6256,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "Profile flatener" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "G-코드를 수신하고 프린터로 보냅니다. 플러그인은 또한 펌웨어를 업데이트 할 수 있습니다." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USB 프린팅" - #~ msgctxt "description" #~ msgid "Ask the user once if he/she agrees with our license." #~ msgstr "사용자에게 라이선스에 동의하는지 한 번 묻습니다." @@ -5424,278 +6264,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "사용자 계약" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "압축 된 아카이브에 g-code를 씁니다." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "압축 된 G 코드 작성기" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Ultimaker 포맷 패키지 작성을 지원합니다." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "UFP 작성자" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Cura에서 준비 단계 제공." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "준비 단계" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "이동식 드라이브를 제공합니다." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ 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 a monitor stage in Cura." -#~ msgstr "Cura에서 모니터 단계 제공." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "모니터 단계" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "펌웨어 업데이트를 확인합니다." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "펌웨어 업데이트 검사기" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "시뮬레이션 뷰를 제공합니다." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "시뮬레이션 뷰" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "압축 된 아카이브로 부터 g-code를 읽습니다." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "압축 된 G 코드 리더기" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "후처리를 위해 사용자가 만든 스크립트를 허용하는 확장 프로그램" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "후처리" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "특정 장소에서 서포트 프린팅을 막는 지우개 메쉬(eraser mesh)를 만듭니다" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Support Eraser" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "익명의 슬라이스 정보를 제출하십시오. 환경 설정을 통해 비활성화 할 수 있습니다." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "슬라이스 정보" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "XML 기반 재료 프로파일을 읽고 쓸 수있는 기능을 제공합니다." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "재료 프로파일" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "레거시 Cura 버전에서 프로파일 가져 오기를 지원합니다." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "레거시 Cura 프로파일 리더" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "G-코드 파일에서 프로파일 가져 오기를 지원합니다." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "GCode 프로파일 리더기" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Cura 3.2에서 Cura 3.3으로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "3.2에서 3.3으로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Cura 3.3에서 Cura 3.4로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "버전 업그레이드 3.3에서 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Cura 2.5에서 Cura 2.6으로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "2.5에서 2.6으로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Cura 2.7에서 Cura 3.0으로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "2.7에서 3.0으로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Cura 3.4에서 Cura 3.5로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "3.4에서 3.5로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Cura 3.0에서 Cura 3.1로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "3.0에서 3.1로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Cura 2.6에서 Cura 2.7로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "2.6에서 2.7으로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Cura 2.1에서 Cura 2.2로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "2.1에서 2.2로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Cura 2.2에서 Cura 2.4로 구성을 업그레이드합니다." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "2.2에서 2.4로 버전 업그레이드" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "2D 이미지 파일에서 프린팅 가능한 지오메트리를 생성 할 수 있습니다." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "이미지 리더" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "CuraEngine 슬라이스 백엔드 링크를 제공합니다." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "CuraEngine 백엔드" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "모델 별 설정을 제공합니다." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "모델 별 설정 도구" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "3MF 파일 읽기 지원." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MF 리더" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "일반 솔리드 메쉬보기를 제공합니다." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "솔리드 뷰" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "G-코드 파일을 로드하고 표시 할 수 있습니다." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "G-코드 리더" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Cura 프로파일 내보내기 지원을 제공합니다." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura 프로파일 작성자" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "3MF 파일 작성 지원을 제공합니다." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF 기록기" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Ultimaker 기계에 대한 기계 작동 제공(예 : 침대 수평 조정 마법사, 업그레이드 선택 등)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ultimaker 기기 동작" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Cura 프로파일 가져 오기 지원을 제공합니다." - -#~ msgctxt "name" -#~ msgid "Cura Profile Reader" -#~ msgstr "Cura 프로파일 리더" - #~ msgctxt "@warning:status" #~ msgid "Please generate G-code before saving." #~ msgstr "저장하기 전에 G-code를 생성하십시오." @@ -5736,14 +6304,6 @@ msgstr "X3GWriter" #~ 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로 프린팅" diff --git a/resources/i18n/ko_KR/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po index 8dc825e5e2..193031e1ae 100644 --- a/resources/i18n/ko_KR/fdmextruder.def.json.po +++ b/resources/i18n/ko_KR/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Korean \n" "Language-Team: Jinbum Kim , Korean \n" diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index b254d7da57..fa2b0c5314 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Korean \n" -"Language-Team: Jinbum Kim , Korean \n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -234,7 +238,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 +248,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 +258,7 @@ msgstr "노즐 끝의 외경." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "노즐 길이" #: fdmprinter.def.json @@ -264,7 +268,7 @@ msgstr "노즐의 끝과 프린트 헤드의 가장 낮은 부분 사이의 높 #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "노즐 각도" #: fdmprinter.def.json @@ -274,7 +278,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 +308,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 +318,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 +338,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 +403,7 @@ msgstr "재료를 리트렉션하는 G1 명령어에서 E 속성을 사용하는 #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "허용되지 않는 지역" #: fdmprinter.def.json @@ -419,7 +423,7 @@ msgstr "노즐이 위치할 수 없는 구역의 목록입니다." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "머신 헤드 폴리곤" #: fdmprinter.def.json @@ -429,7 +433,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 +443,7 @@ msgstr "프린트 헤드의 2D 실루엣 (팬 뚜껑 포함)." #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "갠트리 높이" #: fdmprinter.def.json @@ -469,7 +473,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 @@ -1294,8 +1298,9 @@ 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 +1322,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 +1339,14 @@ 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" @@ -1632,7 +1643,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" @@ -1864,6 +1877,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 +1997,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 +2087,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 +2324,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" @@ -2154,6 +2377,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 +2578,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" @@ -2924,6 +3157,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 +3437,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,12 +3503,12 @@ 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" +msgctxt "support_infill_angles description" msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." msgstr "서포트에 대한 내부채움 패턴 방향. 서포트 내부채움 패턴은 수평면에서 회전합니다." @@ -3391,8 +3639,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" @@ -3770,14 +4018,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" @@ -3899,7 +4147,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" @@ -4271,16 +4521,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" @@ -4321,16 +4561,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" @@ -4341,6 +4571,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" @@ -4623,8 +4863,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" @@ -4856,6 +5096,16 @@ 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." +msgstr "최대 해상도 설정에 대한 해상도를 낮추면 최대 편차를 사용할 수 있습니다. 최대 편차를 높이면 프린트의 정확도는 감소하지만, G 코드도 감소합니다." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5113,8 +5363,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" @@ -5455,7 +5705,7 @@ msgstr "노즐과 수평 아래쪽 라인 사이의 거리. 거리가 클수록 #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "어댑티브 레이어 사용" #: fdmprinter.def.json @@ -5465,7 +5715,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 @@ -5475,7 +5725,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 @@ -5485,7 +5735,7 @@ msgstr "이전 높이와 비교되는 다음 레이어 높이의 차이." #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Threshold" msgstr "어댑티브 레이어 임계 값" #: fdmprinter.def.json @@ -5703,6 +5953,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5763,6 +6163,138 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬입니다." +#~ 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 "스킨 라인 폭의 비율인 스킨과 벽 사이의 오버랩 양. 약간의 오버랩으로 벽이 스킨과 확실하게 체결됩니다. 이것은 스킨 라인과 가장 안쪽 벽과의 평균 라인 폭의 비율입니다." @@ -5900,7 +6432,6 @@ msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬 #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "시작과 동시에 실행될 G 코드 명령어 \n" #~ "." @@ -5913,7 +6444,6 @@ msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬 #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "맨 마지막에 실행될 G 코드 명령 \n" #~ "." diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 22c9ee4857..943c792aea 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Dutch\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Machine-instellingen" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D-modelassistent" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,17 +64,11 @@ msgid "" "

{model_names}

\n" "

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

\n" "

View print quality guide

" -msgstr "

Een of meer 3D-modellen worden mogelijk niet optimaal geprint vanwege het modelformaat en de materiaalconfiguratie:

\n

{model_names}

\n

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 "Changelog" -msgstr "Wijzigingenlogboek" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Wijzigingenlogboek Weergeven" +msgstr "" +"

Een of meer 3D-modellen worden mogelijk niet optimaal geprint vanwege het modelformaat en de materiaalconfiguratie:

\n" +"

{model_names}

\n" +"

Ontdek hoe u de best mogelijke printkwaliteit en betrouwbaarheid verkrijgt.

\n" +"

Handleiding printkwaliteit bekijken

" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" @@ -91,37 +85,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Profiel is platgemaakt en geactiveerd." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF-bestand" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Printen via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Via USB Printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Aangesloten via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -132,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "X3g-bestand" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -144,6 +142,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" @@ -202,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Fout" @@ -234,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Waarschuwing" @@ -263,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Verwisselbaar Station" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Via het netwerk verbonden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Verificatiestatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Verificatiestatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Opnieuw proberen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "De toegangsaanvraag opnieuw verzenden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 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:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Toegang aanvragen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "De configuratie komt niet overeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 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:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Gegevens Verzenden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniseren met de printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Via het netwerk verbonden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Gegevens verzonden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "In monitor weergeven" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Print klaar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Leeg" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Onbekend" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Printen via Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Printen via Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Verbonden via Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Cloud-fout" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Kan de printtaak niet exporteren." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Kan de gegevens niet uploaden naar de printer." @@ -537,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "vandaag" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Er is een fout opgetreden tijdens het verbinden met de cloud." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Printtaak verzenden" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Gegevens naar een extern cluster verzenden" +msgid "Uploading via Ultimaker Cloud" +msgstr "Uploaden via Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Verbinden met Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Niet opnieuw vragen voor deze printer." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Aan de slag" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Verbonden!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Uw verbinding controleren" @@ -593,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Controleren" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Geen toegang tot update-informatie." @@ -650,46 +654,11 @@ 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" msgstr "Cura 15.04-profielen" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Evaluatie" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -715,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-afbeelding" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -795,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Projectbestand Openen" @@ -822,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Details van de G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -856,7 +825,7 @@ 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:121 +#: /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." @@ -917,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Voorbeeld" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Buitenwand" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Binnenwanden" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Vulling" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Supportvulling" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Verbindingsstructuur" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Supportstructuur" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Beweging" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Intrekkingen" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Overig(e)" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Vooraf geslicet bestand {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Niet ondersteund" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Ongeldige bestands-URL:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Niet overschreven" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "De instellingen zijn bijgewerkt" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extruder(s) uitgeschakeld" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format 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}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, 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:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Aangepast profiel" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Vooraf geslicet bestand {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Volgende" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Toevoegen" + +#: /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:109 #, python-brace-format @@ -1166,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Alle Bestanden (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Onbekend" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Aangepast materiaal" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Aangepast" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Werkvolume" @@ -1197,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1219,7 +1239,7 @@ msgstr "Objecten plaatsen" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1230,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Kan locatie niet vinden" @@ -1260,7 +1280,12 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "

Oeps, Ultimaker Cura heeft een probleem gedetecteerd.

\n

Tijdens het opstarten is een onherstelbare fout opgetreden. Deze fout is mogelijk veroorzaakt door enkele onjuiste configuratiebestanden. Het wordt aanbevolen een back-up te maken en de standaardinstelling van uw configuratie te herstellen.

\n

Back-ups bevinden zich in de configuratiemap.

\n

Stuur ons dit crashrapport om het probleem op te lossen.

\n " +msgstr "" +"

Oeps, Ultimaker Cura heeft een probleem gedetecteerd.

\n" +"

Tijdens het opstarten is een onherstelbare fout opgetreden. Deze fout is mogelijk veroorzaakt door enkele onjuiste configuratiebestanden. Het wordt aanbevolen een back-up te maken en de standaardinstelling van uw configuratie te herstellen.

\n" +"

Back-ups bevinden zich in de configuratiemap.

\n" +"

Stuur ons dit crashrapport om het probleem op te lossen.

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" @@ -1293,7 +1318,10 @@ 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 "

Er is een fatale fout opgetreden in Cura. Stuur ons het crashrapport om het probleem op te lossen

\n

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

\n " +msgstr "" +"

Er is een fatale fout opgetreden in Cura. Stuur ons het crashrapport om het probleem op te lossen

\n" +"

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

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" @@ -1365,239 +1393,197 @@ msgstr "Logboeken" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Rapport verzenden" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Machines laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Scene instellen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Interface laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Machine-instellingen" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Printer" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Printerinstellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Breedte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Diepte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Hoogte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Vorm van het platform" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Centraal oorsprongpunt" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Verwarmd bed" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Versie G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" -msgstr "Instellingen Printkop" +msgstr "Printkopinstellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" -msgstr "Hoogte rijbrug" +msgid "Gantry Height" +msgstr "Rijbrughoogte" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Aantal extruders" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "Start G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "Eind G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Nummer van koelventilator" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -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:18 msgctxt "@action:button" @@ -1605,7 +1591,7 @@ msgid "Install" msgstr "Installeren" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Geïnstalleerd" @@ -1621,15 +1607,15 @@ msgid "ratings" msgstr "beoordelingen" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Invoegtoepassingen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materialen" @@ -1639,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Uw beoordeling" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Onbekend" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1760,7 +1743,7 @@ 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" @@ -1796,7 +1779,10 @@ 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 "Deze invoegtoepassing bevat een licentie.\nU moet akkoord gaan met deze licentie om deze invoegtoepassing te mogen installeren.\nGaat u akkoord met de onderstaande voorwaarden?" +msgstr "" +"Deze invoegtoepassing bevat een licentie.\n" +"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:55 msgctxt "@action:button" @@ -1843,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Packages ophalen..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1858,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Sluiten" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1949,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Laden..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Niet beschikbaar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Onbereikbaar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Inactief" @@ -1990,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Zonder titel" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anoniem" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Hiervoor zijn configuratiewijzigingen vereist" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Details" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Niet‑beschikbare printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Eerst beschikbaar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Glas" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2028,178 +1994,191 @@ msgstr "In wachtrij" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Ga naar Cura Connect" +msgid "Manage in browser" +msgstr "Beheren in browser" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Printtaken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Totale printtijd" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Wachten op" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Printgeschiedenis weergeven" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Bestaande verbinding" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 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:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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\nSelecteer 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Toevoegen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Bewerken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Verwijderen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Vernieuwen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Ongeldig IP-adres" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Printeradres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Afbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Pauzeren..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Voltooit %1 om %2" @@ -2303,44 +2282,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Overschrijven" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminium" @@ -2350,107 +2329,109 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Verbinding maken met een printer" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Cura-instellingengids" + +#: /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." -msgstr "Controleer of de printer verbonden is:\n- Controleer of de printer ingeschakeld is.\n- Controleer of de printer verbonden is met het netwerk." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "Selecteer een met een netwerk verbonden printer om te controleren." +msgid "Please connect your printer to the network." +msgstr "Verbind uw printer met het netwerk." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Verbind uw Ultimaker-printer met uw lokale netwerk." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materiaalkleur" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Lijntype" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Doorvoersnelheid" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Laagdikte" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Compatibiliteitsmodus" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Bewegingen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Helpers" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Shell" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Vulling" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Boven-/onderkant" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Binnenwand" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2480,30 +2461,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "Verzenden van deze gegevens naar Ultimaker toestaan en ons helpen Cura te verbeteren" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Er is geen print geselecteerd" +msgid "Allow sending anonymous data" +msgstr "Verzenden van anonieme gegevens toestaan" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2552,19 +2528,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." @@ -2678,7 +2654,7 @@ msgid "Printer Group" msgstr "Printergroep" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Profielinstellingen" @@ -2691,19 +2667,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Naam" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2784,6 +2760,7 @@ 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" @@ -2874,22 +2851,23 @@ msgid "Previous" msgstr "Vorige" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Exporteren" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Volgende" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Tip" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Standaard" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2900,150 +2878,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Checklist" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Printerupgrades Selecteren" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson-blok" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -3094,170 +2973,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaal is geëxporteerd naar %1" @@ -3272,412 +3151,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Taal:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 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:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch slicen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Gedrag kijkvenster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Overhang weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 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:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellen gescheiden houden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Cameraweergave: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Perspectief" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Orthografisch" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Bestanden openen en opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Grote modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extreem kleine modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Modellen selecteren wanneer ze geladen zijn" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Machinevoorvoegsel toevoegen aan taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Altijd vragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Altijd als project openen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Altijd modellen importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Profielen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Gewijzigde instellingen altijd verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bij starten op updates controleren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonieme) printgegevens verzenden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Meer informatie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Experimenteel" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "Functionaliteit voor meerdere platformen gebruiken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Hernoemen" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Profiel Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profiel Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profiel Hernoemen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Profiel Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Profiel Exporteren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Printer: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Standaardprofielen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Aangepaste profielen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Huidige wijzigingen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Algemene Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Marktplaats" @@ -3720,12 +3624,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3740,33 +3644,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "instellingen zoeken" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Deze instelling zichtbaar houden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Zichtbaarheid Instelling Configureren..." @@ -3777,50 +3681,64 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Een aantal verborgen instellingen gebruiken andere waarden dan hun normale berekende waarde.\n\nKlik om deze instellingen zichtbaar te maken." +msgstr "" +"Een aantal verborgen instellingen gebruiken andere waarden dan hun normale berekende waarde.\n" +"\n" +"Klik om deze instellingen zichtbaar te maken." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 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 "Deze instelling heeft een andere waarde dan in het profiel.\n\nKlik om de waarde van het profiel te herstellen." +msgstr "" +"Deze instelling heeft een andere waarde dan in het profiel.\n" +"\n" +"Klik om de waarde van het profiel te herstellen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 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 "Deze instelling wordt normaliter berekend, maar is nu ingesteld op een absolute waarde.\n\nKlik om de berekende waarde te herstellen." +msgstr "" +"Deze instelling wordt normaliter berekend, maar is nu ingesteld op een absolute waarde.\n" +"\n" +"Klik om de berekende waarde te herstellen." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Aangepast" @@ -3835,27 +3753,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3872,8 +3785,8 @@ msgstr "U hebt enkele profielinstellingen aangepast. Ga naar de aangepaste modus #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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" +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3901,12 +3814,15 @@ 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\nKlik om het profielbeheer te openen." +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/PrintSetupSelector.qml:19 +#: /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 "Printinstelling is uitgeschakeld. Het G-code-bestand kan niet worden gewijzigd." +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" @@ -3938,7 +3854,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "G-code verzenden" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4035,11 +3951,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favorieten" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Standaard" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4055,32 +3966,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Printer" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Instellen als Actieve Extruder" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Extruder inschakelen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Extruder uitschakelen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "&Platform" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Profiel" @@ -4090,7 +4001,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Camerapositie" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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" @@ -4154,12 +4080,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Configuratie selecteren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Zie de materiaalcompatibiliteitsgrafiek" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Configuraties" @@ -4184,17 +4105,17 @@ msgctxt "@label" msgid "Printer" msgstr "Printer" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Gebruik lijm bij deze combinatie van materialen voor een betere hechting." @@ -4214,42 +4135,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "&Recente bestanden openen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Printtijd" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Typen weergeven" +msgid "View type" +msgstr "Type weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Hallo " +msgid "Object list" +msgstr "Lijst met objecten" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Afmelden" @@ -4259,11 +4185,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Aanmelden" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4274,8 +4195,11 @@ 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" +"- 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" @@ -4287,50 +4211,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Geen tijdschatting beschikbaar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Kan Niet Slicen" +msgid "Unable to slice" +msgstr "Kan niet slicen" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Tijdspecificatie" +msgid "Time estimation" +msgstr "Tijdschatting" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Materiaalspecificatie" +msgid "Material estimation" +msgstr "Materiaalschatting" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4352,285 +4281,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Vooraf ingestelde printers" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Marktplaats" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura afsluiten" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Package installeren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Bestand(en) openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Printer Toevoegen" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4648,7 +4591,9 @@ 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.\nWilt u deze instellingen behouden of verwijderen?" +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" @@ -4690,34 +4635,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Nieuw profiel maken" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Een printer aan Cura toevoegen" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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\nAls 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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Fabrikant" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Printernaam" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Printer Toevoegen" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4738,7 +4655,9 @@ 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.\nCura maakt met trots gebruik van de volgende opensourceprojecten:" +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:134 msgctxt "@label" @@ -4875,27 +4794,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Project opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Platform" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 &materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Materiaal" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Opslaan" @@ -4925,30 +4849,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Modellen importeren" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Alleen huidig platform weergeven" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Leeg" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Schikken naar alle platformen" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Een printer toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Huidig platform schikken" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Een netwerkprinter toevoegen" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Een niet-netwerkprinter toevoegen" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Toevoegen" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Printernaam" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Biedt een manier om de machine-instellingen (zoals bouwvolume, maat nozzle, enz.) te wijzigen." -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3G-schrijver" +msgid "Machine Settings action" +msgstr "Actie machine-instellingen" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Nieuwe Cura-packages zoeken, beheren en installeren." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Werkset" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Biedt de röntgenweergave." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Röntgenweergave" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Deze optie biedt ondersteuning voor het lezen van X3D-bestanden." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D-lezer" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Met deze optie schrijft u G-code naar een bestand." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "G-code-schrijver" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Via deze optie controleert u de modellen en de printconfiguratie op mogelijke printproblemen en ontvangt u suggesties." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Biedt machineacties voor het bijwerken van de firmware." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Firmware-updater" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Hiermee maakt u een afgevlakte versie van het gewijzigde profiel." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Profielvlakker" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Biedt ondersteuning voor het lezen van AMF-bestanden." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "AMF-lezer" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Hiermee accepteert u G-code en verzendt u deze code naar een printer. Via de invoegtoepassing kan tevens de firmware worden bijgewerkt." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB-printen" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Met deze optie schrijft u G-code naar een gecomprimeerd archief." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Schrijver voor gecomprimeerde G-code" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Deze optie biedt ondersteuning voor het schrijven van Ultimaker Format Packages." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "UFP-schrijver" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Deze optie biedt een voorbereidingsstadium in Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Stadium voorbereiden" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Biedt hotplug- en schrijfondersteuning voor verwisselbare stations." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3-netwerkverbinding" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Instellingengids" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Deze optie biedt een controlestadium in Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Controlestadium" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Controleert op firmware-updates." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Firmware-updatecontrole" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Hiermee geeft u de simulatieweergave weer." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Simulatieweergave" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Hiermee leest u G-code uit een gecomprimeerd archief." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Lezer voor gecomprimeerde G-code" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Uitbreiding waarmee door de gebruiker gemaakte scripts voor nabewerking kunnen worden gebruikt" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Nabewerking" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Hiermee maakt u een wisraster om het printen van een supportstructuur op bepaalde plekken te blokkeren" + +#: SupportEraser/plugin.json +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." +msgstr "Verzendt anonieme slice-informatie. Dit kan bij de voorkeuren worden uitgeschakeld." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Slice-informatie" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Biedt mogelijkheden om materiaalprofielen op XML-basis te lezen en te schrijven." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Materiaalprofielen" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Biedt ondersteuning voor het importeren van profielen uit oudere Cura-versies." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Lezer voor Profielen van oudere Cura-versies" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Biedt ondersteuning voor het importeren van profielen uit G-code-bestanden." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "G-code-profiellezer" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.2 naar Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Versie-upgrade van 3.2 naar 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.3 naar Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Versie-upgrade van 3.3 naar 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.5 naar Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Versie-upgrade van 2.5 naar 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.7 naar Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.4 naar Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.0 naar Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.6 naar Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Versie-upgrade van 2.6 naar 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.1 naar Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Versie-upgrade van 2.1 naar 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.2 naar Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Versie-upgrade van 2.2 naar 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Hiermee wordt het genereren van printbare geometrie van 2D-afbeeldingsbestanden mogelijk." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Afbeeldinglezer" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Voorziet in de koppeling naar het slicing-back-end van de CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine-back-end" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Biedt de Instellingen per Model." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Gereedschap voor Instellingen per Model" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Biedt ondersteuning voor het lezen van 3MF-bestanden." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF-lezer" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Biedt een normale, solide rasterweergave." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Solide weergave" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Hiermee kunt u G-code-bestanden laden en weergeven." + +#: GCodeReader/plugin.json +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." +msgstr "Biedt ondersteuning voor het exporteren van Cura-profielen." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura-profielschrijver" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Profielassistent afdrukken" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Biedt ondersteuning voor het schrijven van 3MF-bestanden." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Biedt machineacties voor Ultimaker-machines (zoals wizard voor bedkalibratie, selecteren van upgrades, enz.)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Acties Ultimaker-machines" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Biedt ondersteuning bij het importeren van Cura-profielen." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura-profiellezer" + +#~ 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" @@ -5146,7 +6109,6 @@ msgstr "X3G-schrijver" #~ "Print Setup disabled\n" #~ "G-code files cannot be modified" #~ msgstr "" - #~ "Instelling voor printen uitgeschakeld\n" #~ "G-code-bestanden kunnen niet worden aangepast" @@ -5290,62 +6252,6 @@ msgstr "X3G-schrijver" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "Klik om de materiaalcompatibiliteit te controleren op Ultimaker.com." -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Biedt een manier om de machine-instellingen (zoals bouwvolume, maat nozzle, enz.) te wijzigen." - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Actie machine-instellingen" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Nieuwe Cura-packages zoeken, beheren en installeren." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Werkset" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Biedt de röntgenweergave." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Röntgenweergave" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Deze optie biedt ondersteuning voor het lezen van X3D-bestanden." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3D-lezer" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Met deze optie schrijft u G-code naar een bestand." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "G-code-schrijver" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Via deze optie controleert u de modellen en de printconfiguratie op mogelijke printproblemen en ontvangt u suggesties." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Modelcontrole" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Hiermee geeft u de wijzigingen weer ten opzichte van de laatst gecontroleerde versie." @@ -5354,14 +6260,6 @@ msgstr "X3G-schrijver" #~ msgid "Changelog" #~ msgstr "Wijzigingenlogboek" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Biedt machineacties voor het bijwerken van de firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Firmware-updater" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Hiermee maakt u een afgevlakte versie van het gewijzigde profiel." @@ -5370,14 +6268,6 @@ msgstr "X3G-schrijver" #~ msgid "Profile flatener" #~ msgstr "Profielvlakker" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Hiermee accepteert u G-code en verzendt u deze code naar een printer. Via de invoegtoepassing kan tevens de firmware worden bijgewerkt." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USB-printen" - #~ 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." @@ -5386,278 +6276,6 @@ msgstr "X3G-schrijver" #~ msgid "UserAgreement" #~ msgstr "UserAgreement" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Met deze optie schrijft u G-code naar een gecomprimeerd archief." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Schrijver voor gecomprimeerde G-code" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Deze optie biedt ondersteuning voor het schrijven van Ultimaker Format Packages." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "UFP-schrijver" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Deze optie biedt een voorbereidingsstadium in Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Stadium voorbereiden" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Biedt hotplug- en schrijfondersteuning voor verwisselbare stations." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Invoegtoepassing voor Verwijderbaar uitvoerapparaat" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Deze optie biedt een controlestadium in Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Controlestadium" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Controleert op firmware-updates." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Firmware-updatecontrole" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Hiermee geeft u de simulatieweergave weer." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Simulatieweergave" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Hiermee leest u G-code uit een gecomprimeerd archief." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Lezer voor gecomprimeerde G-code" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Uitbreiding waarmee door de gebruiker gemaakte scripts voor nabewerking kunnen worden gebruikt" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Nabewerking" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Hiermee maakt u een wisraster om het printen van een supportstructuur op bepaalde plekken te blokkeren" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Supportwisser" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Verzendt anonieme slice-informatie. Dit kan bij de voorkeuren worden uitgeschakeld." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Slice-informatie" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Biedt mogelijkheden om materiaalprofielen op XML-basis te lezen en te schrijven." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Materiaalprofielen" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Biedt ondersteuning voor het importeren van profielen uit oudere Cura-versies." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Lezer voor Profielen van oudere Cura-versies" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Biedt ondersteuning voor het importeren van profielen uit G-code-bestanden." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "G-code-profiellezer" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.2 naar Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Versie-upgrade van 3.2 naar 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.3 naar Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Versie-upgrade van 3.3 naar 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.5 naar Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Versie-upgrade van 2.5 naar 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.7 naar Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Versie-upgrade van 2.7 naar 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.4 naar Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Versie-upgrade van 3.4 naar 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.0 naar Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Versie-upgrade van 3.0 naar 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.6 naar Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Versie-upgrade van 2.6 naar 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.1 naar Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Versie-upgrade van 2.1 naar 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.2 naar Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Versie-upgrade van 2.2 naar 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Hiermee wordt het genereren van printbare geometrie van 2D-afbeeldingsbestanden mogelijk." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Afbeeldinglezer" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Voorziet in de koppeling naar het slicing-back-end van de CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "CuraEngine-back-end" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Biedt de Instellingen per Model." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Gereedschap voor Instellingen per Model" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Biedt ondersteuning voor het lezen van 3MF-bestanden." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MF-lezer" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Biedt een normale, solide rasterweergave." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Solide weergave" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Hiermee kunt u G-code-bestanden laden en weergeven." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "G-code-lezer" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Biedt ondersteuning voor het exporteren van Cura-profielen." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura-profielschrijver" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Biedt ondersteuning voor het schrijven van 3MF-bestanden." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF-schrijver" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Biedt machineacties voor Ultimaker-machines (zoals wizard voor bedkalibratie, selecteren van upgrades, enz.)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Acties Ultimaker-machines" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Biedt ondersteuning bij het importeren van Cura-profielen." - -#~ 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." @@ -5698,14 +6316,6 @@ msgstr "X3G-schrijver" #~ 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" @@ -5751,7 +6361,6 @@ msgstr "X3G-schrijver" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "Kan niet exporteren met de kwaliteit \"{}\"!\n" #~ "Instelling teruggezet naar \"{}\"." @@ -5928,7 +6537,6 @@ msgstr "X3G-schrijver" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "Sommige modellen worden mogelijk niet optimaal geprint vanwege de grootte van het object en de gekozen materialen voor modellen: {model_names}.\n" #~ "Mogelijk nuttige tips om de printkwaliteit te verbeteren:\n" #~ "1) Gebruik afgeronde hoeken.\n" @@ -5945,7 +6553,6 @@ msgstr "X3G-schrijver" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "In uw tekening zijn geen modellen gevonden. Controleer de inhoud nogmaals en zorg ervoor dat één onderdeel of assemblage zich in de tekening bevindt.\n" #~ "\n" #~ "Hartelijk dank." @@ -5956,7 +6563,6 @@ msgstr "X3G-schrijver" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "In uw tekening is meer dan één onderdeel of assemblage gevonden. Momenteel worden alleen tekeningen met precies één onderdeel of assemblage ondersteund.\n" #~ "\n" #~ "Sorry." @@ -5981,7 +6587,6 @@ msgstr "X3G-schrijver" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Beste klant,\n" #~ "Op uw systeem is geen geldige installatie van SolidWorks aangetroffen. Dit betekent dat SolidWorks niet is geïnstalleerd of dat u niet over een geldige licentie beschikt. Controleer of SolidWorks zelf zonder problemen kan worden uitgevoerd en/of neem contact op met uw IT-afdeling.\n" #~ "\n" @@ -5996,7 +6601,6 @@ msgstr "X3G-schrijver" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Beste klant,\n" #~ "Momenteel voert u deze invoegtoepassing uit op een ander besturingssysteem dan Windows. Deze invoegtoepassing werkt alleen op systemen waarop Windows en SolidWorks met een geldige licentie zijn geïnstalleerd. Installeer deze invoegtoepassing op een Windows-systeem waarop SolidWorks is geïnstalleerd.\n" #~ "\n" @@ -6101,7 +6705,6 @@ msgstr "X3G-schrijver" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Open de map\n" #~ "met macro en pictogram" @@ -6400,7 +7003,6 @@ msgstr "X3G-schrijver" #~ "\n" #~ " Thanks!." #~ msgstr "" - #~ "In uw tekening zijn geen modellen gevonden. Controleer de inhoud en zorg ervoor dat zich in de tekening een onderdeel of assemblage bevindt.\n" #~ "\n" #~ " Hartelijk dank." @@ -6411,7 +7013,6 @@ msgstr "X3G-schrijver" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "In uw tekening is meer dan één onderdeel of assemblage gevonden. Momenteel worden alleen tekeningen met precies één onderdeel of assemblage ondersteund.\n" #~ "\n" #~ "Sorry." @@ -6446,7 +7047,6 @@ msgstr "X3G-schrijver" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Er is een fatale fout opgetreden. Stuur ons het Crashrapport om het probleem op te lossen

\n" #~ "

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

\n" #~ " " @@ -6613,7 +7213,6 @@ msgstr "X3G-schrijver" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Er is een fatale uitzondering opgetreden. Stuur ons het Crashrapport om het probleem op te lossen

\n" #~ "

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

\n" #~ " " @@ -6760,7 +7359,6 @@ msgstr "X3G-schrijver" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Er is een fatale fout opgetreden die niet kan worden hersteld!

\n" #~ "

Gebruik de onderstaande informatie om een bugrapport te plaatsen op http://github.com/Ultimaker/Cura/issues

\n" #~ " " @@ -6803,7 +7401,6 @@ msgstr "X3G-schrijver" #~ "You need to accept this license to install this plugin.\n" #~ "Do you agree with the terms below?" #~ msgstr "" - #~ " invoegtoepassing bevat een licentie.\n" #~ "U moet akkoord gaan met deze licentie om deze invoegtoepassing te mogen installeren.\n" #~ "Gaat u akkoord met onderstaande voorwaarden?" @@ -7331,7 +7928,6 @@ msgstr "X3G-schrijver" #~ msgid "Print Selected Model with %1" #~ msgid_plural "Print Selected Models With %1" #~ msgstr[0] "Geselecteerd model printen met %1" - #~ msgstr[1] "Geselecteerde modellen printen met %1" #~ msgctxt "@info:status" @@ -7361,7 +7957,6 @@ msgstr "X3G-schrijver" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Er is een fatale fout opgetreden die niet kan worden hersteld!

\n" #~ "

Hopelijk komt u met de afbeelding van deze kitten wat bij van de schrik.

\n" #~ "

Gebruik de onderstaande informatie om een bugrapport te plaatsen op http://github.com/Ultimaker/Cura/issues

\n" diff --git a/resources/i18n/nl_NL/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po index 4a23082f83..a9714f790a 100644 --- a/resources/i18n/nl_NL/fdmextruder.def.json.po +++ b/resources/i18n/nl_NL/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index f6b9c17d48..bba19e213e 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Dutch\n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -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-opdrachten die aan het begin worden uitgevoerd, gescheiden door \n." +msgstr "" +"G-code-opdrachten die aan het begin worden uitgevoerd, gescheiden door \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-opdrachten die aan het eind worden uitgevoerd, gescheiden door \n." +msgstr "" +"G-code-opdrachten die aan het eind worden uitgevoerd, gescheiden door \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -119,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" @@ -129,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" @@ -233,8 +237,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" @@ -243,7 +247,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 @@ -253,7 +257,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 @@ -263,7 +267,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 @@ -273,7 +277,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 @@ -303,7 +307,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 @@ -313,7 +317,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 @@ -333,7 +337,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 @@ -398,7 +402,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 @@ -418,7 +422,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 @@ -428,8 +432,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" @@ -438,7 +442,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 @@ -468,8 +472,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" @@ -1293,8 +1297,12 @@ 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" @@ -1316,6 +1324,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" @@ -1328,13 +1341,15 @@ 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" @@ -1631,7 +1646,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 "Voeg extra wanden toe rondom de vulling. Deze wanden kunnen ervoor zorgen dat de skin aan de boven-/onderkant minder doorzakt. Dit betekent dat u met alleen wat extra materiaal voor dezelfde kwaliteit minder skinlagen aan de boven-/onderkant nodig hebt.\nDeze optie kan in combinatie met de optie 'Polygonen voor de vulling verbinden' worden gebruikt om alle vulling in één doorvoerpad te verbinden zonder extra bewegingen of intrekkingen, mits correct ingesteld." +msgstr "" +"Voeg extra wanden toe rondom de vulling. Deze wanden kunnen ervoor zorgen dat de skin aan de boven-/onderkant minder doorzakt. Dit betekent dat u met alleen wat extra materiaal voor dezelfde kwaliteit minder skinlagen aan de boven-/onderkant nodig hebt.\n" +"Deze optie kan in combinatie met de optie 'Polygonen voor de vulling verbinden' worden gebruikt om alle vulling in één doorvoerpad te verbinden zonder extra bewegingen of intrekkingen, mits correct ingesteld." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1863,6 +1880,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" @@ -1973,6 +2000,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" @@ -1983,6 +2090,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" @@ -2100,8 +2327,9 @@ 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." -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." +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 msgctxt "material_standby_temperature label" @@ -2153,6 +2381,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" @@ -2344,14 +2582,15 @@ 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" @@ -2916,13 +3155,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" @@ -3193,6 +3442,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" @@ -3254,12 +3508,12 @@ 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" +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." @@ -3390,8 +3644,9 @@ 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." -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." +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 msgctxt "support_offset label" @@ -3769,14 +4024,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" @@ -3898,7 +4153,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 "De horizontale afstand tussen de skirt en de eerste laag van de print.\nDit is de minimumafstand. Als u meerdere skirtlijnen print, worden deze vanaf deze afstand naar buiten geprint." +msgstr "" +"De horizontale afstand tussen de skirt en de eerste laag van de print.\n" +"Dit is de minimumafstand. Als u meerdere skirtlijnen print, worden deze vanaf deze afstand naar buiten geprint." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4270,16 +4527,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" @@ -4320,16 +4567,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" @@ -4340,6 +4577,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" @@ -4622,8 +4869,9 @@ 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." -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." +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 msgctxt "relative_extrusion label" @@ -4855,6 +5103,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5112,8 +5370,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" @@ -5345,7 +5603,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 "De afstand van een opwaartse beweging waarbij de doorvoersnelheid wordt gehalveerd.\nHierdoor ontstaat een betere hechting aan voorgaande lagen, zonder dat het materiaal in die lagen te zeer wordt verwarmd. Alleen van toepassing op Draadprinten." +msgstr "" +"De afstand van een opwaartse beweging waarbij de doorvoersnelheid wordt gehalveerd.\n" +"Hierdoor ontstaat een betere hechting aan voorgaande lagen, zonder dat het materiaal in die lagen te zeer wordt verwarmd. Alleen van toepassing op Draadprinten." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5454,7 +5714,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 @@ -5464,7 +5724,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 @@ -5474,7 +5734,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 @@ -5484,8 +5744,8 @@ 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 Threshold" +msgstr "Drempelwaarde adaptieve lagen" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5702,6 +5962,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5762,6 +6172,138 @@ 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 "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." @@ -5963,7 +6505,6 @@ msgstr "Omzettingsmatrix die moet worden toegepast op het model wanneer dit word #~ "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 "" - #~ "De horizontale afstand tussen de skirt en de eerste laag van de print.\n" #~ "Dit is de minimumafstand; als u meerdere skirtlijnen print, worden deze vanaf deze afstand naar buiten geprint." diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index ef7bda6736..574f3886ec 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:44+0100\n" -"Last-Translator: Mariusz 'Virgin71' Matłosz \n" -"Language-Team: reprapy.pl\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\n" +"PO-Revision-Date: 2019-05-27 13:29+0200\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" @@ -19,7 +19,7 @@ msgstr "" "X-Generator: Poedit 2.1.1\n" "X-Poedit-SourceCharset: UTF-8\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 msgctxt "@action" msgid "Machine Settings" msgstr "Ustawienia drukarki" @@ -57,7 +57,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Asystent Modelu 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -71,16 +71,6 @@ 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 "Changelog" -msgstr "Lista zmian" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Pokaż Dziennik" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -96,37 +86,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Profil został spłaszczony i aktywowany." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Drukowanie USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Połączono przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -137,6 +126,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "Plik X3g" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -149,6 +143,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" @@ -207,10 +202,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Błąd" @@ -239,9 +234,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Ostrzeżenie" @@ -268,266 +263,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Dysk wymienny" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drukuj przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Drukuj przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Połączono przez sieć." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Status uwierzytelniania" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Status Uwierzytelniania" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Spróbuj ponownie" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 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:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 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:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Poproś o dostęp" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Niedopasowana konfiguracja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Wysyłanie danych do drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Wysyłanie danych" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronizuj się z drukarką" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Połączone przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Dane Wysłane" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Zobacz w Monitorze" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Drukowanie zakończone" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Pusty" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Nieznany" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Drukuj przez Chmurę" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Drukuj przez Chmurę" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Połączony z Chmurą" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Błąd Chmury" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Nie można eksportować zadania druku." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Nie można wgrać danych do drukarki." @@ -542,48 +538,52 @@ msgctxt "@info:status" msgid "today" msgstr "dziś" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Wystąpił błąd połączenia z chmurą." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Wysyłanie zadania druku" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Wysyłanie danych do zdalnego klastra" +msgid "Uploading via Ultimaker Cloud" +msgstr "Przesyłanie z Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +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" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Nie pytaj więcej dla tej drukarki." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Rozpocznij" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Połączono!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Odnów połączenie" @@ -598,7 +598,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitor" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Nie można uzyskać dostępu do informacji o aktualizacji." @@ -655,46 +655,11 @@ 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" msgstr "Profile Cura 15.04" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Obliczanie" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -720,56 +685,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Obraz GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -800,19 +765,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Dysza" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Otwórz Plik Projektu" @@ -827,18 +792,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Szczegóły G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -861,7 +826,7 @@ 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:121 +#: /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." @@ -922,243 +887,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Podgląd" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Zewnętrzna ściana" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Ściany wewnętrzne" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Wypełnienie" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Wypełnienie podpór" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Łączenie podpory" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Podpory" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Obwódka" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Ruch jałowy" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrakcja" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Inny" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, 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:77 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" 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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Niewspierany" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Nieprawidłowy adres URL pliku:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Nie zastąpione" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Ustawienia zostały zaaktualizowane" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Ekstruder(y) wyłączony(/e)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" 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:196 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." 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:243 #, 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 "Drukarka zdefiniowana w profilu {0} ({1}) nie jest zgodna z bieżącą drukarką ({2}), nie można jej importować." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format 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}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil zaimportowany {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Niestandardowy profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilowi brakuje typu jakości." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, 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 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Następny" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Dodaj" + +#: /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:109 #, python-brace-format @@ -1171,23 +1154,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Wszystkie Pliki (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Nieznany" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Niestandardowy materiał" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Niestandardowy" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Obszar Roboczy" @@ -1202,16 +1203,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1224,7 +1240,7 @@ msgstr "Umieść Obiekty" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1235,19 +1251,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Nie można Znaleźć Lokalizacji" @@ -1378,244 +1394,197 @@ msgstr "Logi" #: /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 "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:341 +#: /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:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ładowanie drukarek..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Ustawianie sceny ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ładowanie interfejsu ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Ustawienia Drukarki" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Drukarka" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Ustawienia drukarki" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Szerokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Głębokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Wysokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Kształt stołu roboczego" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Początek na środku" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Podgrzewany stół" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Wersja G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" -msgstr "Ustawienia głowic drukujących" +msgstr "Ustawienia głowicy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" -msgstr "Wysokość ramy" +msgid "Gantry Height" +msgstr "Wysokość wózka" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Liczba ekstruderów" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "Początkowy G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "Końcowy G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Numer Wentylatora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -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:18 msgctxt "@action:button" @@ -1623,7 +1592,7 @@ msgid "Install" msgstr "Instaluj" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Zainstalowane" @@ -1639,15 +1608,15 @@ msgid "ratings" msgstr "oceny" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Wtyczki" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiał" @@ -1657,52 +1626,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Twoja ocena" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Nieznany" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1778,7 +1744,7 @@ 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" @@ -1864,12 +1830,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Uzyskiwanie pakietów..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1879,22 +1845,6 @@ 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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Zamknij" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1970,38 +1920,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Wczytywanie..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Niedostępne" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Nieosiągalna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Zajęta" @@ -2011,37 +1963,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Bez tytułu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anonimowa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Wymaga zmian konfiguracji" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Szczegóły" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Drukarka niedostępna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Pierwsza dostępna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Szkło" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2049,181 +1995,189 @@ msgstr "W kolejce" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Idź do Cura Connect" +msgid "Manage in browser" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Zadania druku" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Łączny czas druku" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Oczekiwanie na" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Poważ historię druku" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Istniejące Połączenie" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 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:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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 "" -"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:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Dodaj" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Edycja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Usunąć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Odśwież" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Połącz" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Nieprawidłowy adres IP" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Adres drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Wpisz adres IP lub nazwę hosta drukarki w sieci." +msgstr "Podaj adres IP lub nazwę hosta drukarki w sieci." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "Przygotowyję..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Przerywanie..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Zatrzymywanie..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /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" @@ -2327,44 +2281,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Nadpisz" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminum" @@ -2374,110 +2328,108 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Podłącz do drukarki" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Przewodnik po ustawieniach Cura" + +#: /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." +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." msgstr "" -"Upewnij się czy drukarka jest połączona:\n" -"- Sprawdź czy drukarka jest włączona.\n" -"- Sprawdź czy drukarka jest podłączona do sieci." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "Wybierz drukarkę połączoną z siecią, aby nadzorować." +msgid "Please connect your printer to the network." +msgstr "Podłącz drukarkę do sieci." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Połącz drukarkę Ultimaker z twoją siecią lokalną." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /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/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Rodzaj linii" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Szybkość Posuwu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Grubość warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Tryb zgodności" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Ruchy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Pomoce" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Obrys" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Wypełnienie" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Góra/ Dół" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Wewnętrzna ściana" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max" @@ -2507,30 +2459,25 @@ 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 this data" -msgstr "Nie chcę wysyłać 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 this data to Ultimaker and help us improve Cura" -msgstr "Pozwól wysłać te dane do Ultimakera i pomóż nam ulepszyć Curę" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Żaden wydruk nie jest zaznaczony" +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" @@ -2579,19 +2526,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." @@ -2705,7 +2652,7 @@ msgid "Printer Group" msgstr "Grupa drukarek" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Ustawienia profilu" @@ -2718,19 +2665,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Nazwa" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2811,6 +2758,7 @@ 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" @@ -2901,22 +2849,23 @@ msgid "Previous" msgstr "Poprzedni" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Eksportuj" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Następny" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Końcówka" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Podstawowe" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2927,150 +2876,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Lista kontrolna" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Wybierz ulepszenia drukarki" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Block" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3121,170 +2971,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Importuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Udało się wyeksportować materiał do %1" @@ -3299,412 +3149,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Interfejs" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Język:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Waluta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Motyw:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Tnij automatycznie podczas zmiany ustawień." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatyczne Cięcie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Zachowanie okna edycji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Wyświetl zwis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Odwróć kierunek zoomu kamery." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Przybliżaj w kierunku myszy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Otwieranie i zapisywanie plików" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaluj duże modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaluj bardzo małe modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Zaznaczaj modele po załadowaniu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Zawsze pytaj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Zawsze otwieraj jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Zawsze importuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Zawsze odrzucaj wprowadzone zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Prywatność" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 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:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Wyślij (anonimowe) informacje o drukowaniu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Więcej informacji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Eksperymentalne" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 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:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Zmień nazwę" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Stwórz profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Podaj nazwę tego profilu." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplikuj profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Zmień nazwę profilu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Importuj Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Eksportuj Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Drukarka: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Domyślne profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Profile niestandardowe" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Odrzuć bieżące zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ustawienia ogólne" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Marketplace" @@ -3747,12 +3622,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "P&omoc" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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ń." @@ -3767,33 +3642,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "ustawienia wyszukiwania" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ukryj tę opcję" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nie pokazuj tej opcji" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pozostaw tę opcję widoczną" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Skonfiguruj widoczność ustawień ..." @@ -3809,27 +3684,32 @@ msgstr "" "\n" "Kliknij, aby te ustawienia były widoczne." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3840,7 +3720,7 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość z profilu." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3851,12 +3731,12 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość obliczoną." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Niestandardowe" @@ -3871,27 +3751,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3908,8 +3783,8 @@ msgstr "Zmodyfikowałeś ustawienia profilu. Jeżeli chcesz je zmienić, przejd #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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" +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3942,9 +3817,9 @@ msgstr "" "\n" "Kliknij, aby otworzyć menedżer profili." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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." +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 @@ -3977,7 +3852,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Wyślij G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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ę." @@ -4074,11 +3949,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Ulubione" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Podstawowe" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4094,32 +3964,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Ustaw jako aktywną głowicę" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Włącz Ekstruder" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Wyłącz Ekstruder" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "&Pole robocze" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Profil" @@ -4129,7 +3999,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Pozycja kamery" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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 "P&ole robocze" @@ -4193,12 +4078,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Wybierz konfigurację" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Zobacz tabelę kompatybilności materiałów" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Konfiguracje" @@ -4223,17 +4103,17 @@ msgctxt "@label" msgid "Printer" msgstr "Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 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." @@ -4253,42 +4133,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Otwórz &ostatnio używane" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /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:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Typy widoków" +msgid "View type" +msgstr "Typ widoku" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Cześć " +msgid "Object list" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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" +msgstr "Konto Ultimaker" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Wyloguj" @@ -4298,11 +4183,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Zaloguj" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Chmura Ultimaker" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4313,7 +4193,7 @@ 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" +"- 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" @@ -4329,50 +4209,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Szacunkowy czas niedostępny" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "Nie można pociąć" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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 "Potnij" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:117 +#: /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:131 +#: /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 specification" -msgstr "Specyfikacja czasu" +msgid "Time estimation" +msgstr "Szacunkowy czas" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Specyfikacja materiału" +msgid "Material estimation" +msgstr "Szacunkowy materiał" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4394,285 +4279,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Zdefiniowane drukarki" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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 "&Cofnij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Marketplace" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Zamykanie Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Instaluj pakiety" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Otwórz plik(i)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Dodaj drukarkę" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4734,37 +4633,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Utwórz nowy profil" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Dodaj drukarkę do Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Producent" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Nazwa drukarki" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Dodaj drukarkę" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4924,27 +4792,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Zapisz projekt" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Pole robocze" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Ekstruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiał" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Materiał" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Zapisz" @@ -4974,30 +4847,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Importuj modele" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Pokaż tylko aktualną platformę roboczą" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Pusty" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Rozłóż na wszystkich platformach roboczych" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Dodaj drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Rozłóż na obecnej platformie roboczej" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Dodaj drukarkę sieciową" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Dodaj drukarkę niesieciową" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Dodaj" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Nazwa drukarki" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Zapewnia możliwość zmiany ustawień maszyny (takich jak objętość robocza, rozmiar dyszy itp.)." -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "Zapisywacz X3G" +msgid "Machine Settings action" +msgstr "Ustawienia Maszyny" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Znajdź, zarządzaj i instaluj nowe pakiety Cura." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Narzędzia" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Zapewnia widok rentgena." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Widok Rentgena" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Zapewnia możliwość czytania plików X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Czytnik X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Zapisuje g-code do pliku." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "Zapisywacz G-code" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Sprawdza możliwe problemy drukowania modeli i konfiguracji wydruku i podaje porady." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Dostarcza działanie, pozwalające na aktualizację oprogramowania sprzętowego." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Aktualizacja oprogramowania sprzętowego" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Stwórz spłaszczony profil zmian jakości." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Spłaszcz profil" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "" + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Akceptuje G-Code i wysyła je do drukarki. Wtyczka może też aktualizować oprogramowanie." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Drukowanie USB" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Zapisuje g-code do skompresowanego archiwum." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Zapisywacz Skompresowanego G-code" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Zapewnia wsparcie dla zapisywania Pakietów Formatów Ultimaker." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "Zapisywacz UFP" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Zapewnia etap przygotowania w Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Etap Przygotowania" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +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ę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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Połączenie Sieciowe UM3" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Przewodnik po ustawieniach" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Zapewnia etap monitorowania w Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Etap Monitorowania" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Sprawdź aktualizacje oprogramowania." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Sprawdzacz Aktualizacji Oprogramowania" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Zapewnia widok Symulacji." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Widok Symulacji" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Odczytuje g-code ze skompresowanych archiwum." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Czytnik Skompresowanego G-code" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Dodatek, który pozwala użytkownikowi tworzenie skryptów do post processingu" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Post Processing" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Tworzy siatkę do blokowania drukowania podpór w określonych miejscach" + +#: SupportEraser/plugin.json +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." +msgstr "Zatwierdza anonimowe informację o cięciu. Może być wyłączone w preferencjach." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Informacje o cięciu" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Zapewnia możliwość czytania i tworzenia profili materiałów opartych o XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Profile Materiału" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Zapewnia wsparcie dla importowania profili ze starszych wersji Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Czytnik Profili Starszej Cura" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Zapewnia wsparcie dla importowania profili z plików g-code." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "Czytnik Profili G-code" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Ulepsza konfigurację z Cura 3.2 do Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Ulepszenie Wersji z 3.2 do 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Ulepsza konfigurację z Cura 3.3 do Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Ulepszenie Wersji z 3.3 do 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Ulepsza konfigurację z Cura 2.5 do Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Ulepszenie Wersji z 2.5 do 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Ulepsza konfigurację z Cura 2.7 do Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Ulepsza konfigurację z Cura 3.4 do Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Ulepsza konfigurację z Cura 3.0 do Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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 "" + +#: 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." +msgstr "Ulepsza konfigurację z Cura 2.6 do Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Ulepszenie Wersji z 2.6 do 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Ulepsza konfigurację z Cura 2.1 do Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Ulepszenie Wersji z 2.1 do 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Ulepsza konfigurację z Cura 2.2 do Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Ulepszenie Wersji z 2.2 do 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Włącza możliwość generowania drukowalnej geometrii z pliku obrazu 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Czytnik Obrazu" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Zapewnia połączenie z tnącym zapleczem CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Zaplecze CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Zapewnia Ustawienia dla Każdego Modelu." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Narzędzie Ustawień dla Każdego Modelu" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Zapewnia wsparcie dla czytania plików 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Czytnik 3MF" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Zapewnia normalny widok siatki." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Widok Bryły" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Pozwala na ładowanie i wyświetlanie plików G-code." + +#: GCodeReader/plugin.json +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." +msgstr "Zapewnia wsparcie dla eksportowania profili Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura Profile Writer" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Asystent Profilów Druku" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Zapewnia wsparcie dla tworzenia plików 3MF." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Zapewnia czynności maszyny dla urządzeń Ultimaker (na przykład kreator poziomowania stołu, wybór ulepszeń itp.)." + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Czynności maszyny Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Zapewnia wsparcie dla importowania profili Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Czytnik Profili Cura" + +#~ 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" @@ -5318,62 +6230,6 @@ msgstr "Zapisywacz X3G" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "Kliknij, aby sprawdzić zgodność materiału na Ultimaker.com." -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Zapewnia możliwość zmiany ustawień maszyny (takich jak objętość robocza, rozmiar dyszy itp.)." - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Ustawienia Maszyny" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Znajdź, zarządzaj i instaluj nowe pakiety Cura." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Narzędzia" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Zapewnia widok rentgena." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Widok Rentgena" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Zapewnia możliwość czytania plików X3D." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "Czytnik X3D" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Zapisuje g-code do pliku." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "Zapisywacz G-code" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Sprawdza możliwe problemy drukowania modeli i konfiguracji wydruku i podaje porady." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Sprawdzacz Modelu" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Pokazuje zmiany od ostatniej sprawdzonej wersji." @@ -5390,14 +6246,6 @@ msgstr "Zapisywacz X3G" #~ msgid "Profile flatener" #~ msgstr "Charakterystyka Profilu" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Akceptuje G-Code i wysyła je do drukarki. Wtyczka może też aktualizować oprogramowanie." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "Drukowanie USB" - #~ 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." @@ -5406,278 +6254,6 @@ msgstr "Zapisywacz X3G" #~ msgid "UserAgreement" #~ msgstr "ZgodaUżytkownika" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Zapisuje g-code do skompresowanego archiwum." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Zapisywacz Skompresowanego G-code" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Zapewnia wsparcie dla zapisywania Pakietów Formatów Ultimaker." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "Zapisywacz UFP" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Zapewnia etap przygotowania w Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Etap Przygotowania" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Zapewnia wsparcie dla podłączania i zapisywania dysków zewnętrznych." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Wtyczka Urządzenia Wyjścia Dysku Zewn." - -#~ 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 a monitor stage in Cura." -#~ msgstr "Zapewnia etap monitorowania w Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Etap Monitorowania" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Sprawdź aktualizacje oprogramowania." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Sprawdzacz Aktualizacji Oprogramowania" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Zapewnia widok Symulacji." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Widok Symulacji" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Odczytuje g-code ze skompresowanych archiwum." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Czytnik Skompresowanego G-code" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Dodatek, który pozwala użytkownikowi tworzenie skryptów do post processingu" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Post Processing" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Tworzy siatkę do blokowania drukowania podpór w określonych miejscach" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Usuwacz Podpór" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Zatwierdza anonimowe informację o cięciu. Może być wyłączone w preferencjach." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Informacje o cięciu" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Zapewnia możliwość czytania i tworzenia profili materiałów opartych o XML." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Profile Materiału" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Zapewnia wsparcie dla importowania profili ze starszych wersji Cura." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Czytnik Profili Starszej Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Zapewnia wsparcie dla importowania profili z plików g-code." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "Czytnik Profili G-code" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Ulepsza konfigurację z Cura 3.2 do Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Ulepszenie Wersji z 3.2 do 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Ulepsza konfigurację z Cura 3.3 do Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Ulepszenie Wersji z 3.3 do 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Ulepsza konfigurację z Cura 2.5 do Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Ulepszenie Wersji z 2.5 do 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Ulepsza konfigurację z Cura 2.7 do Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Ulepszenie Wersji 2.7 do 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Ulepsza konfigurację z Cura 3.4 do Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Ulepszenie Wersji z 3.4 do 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Ulepsza konfigurację z Cura 3.0 do Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Ulepszenie Wersji 3.0 do 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Ulepsza konfigurację z Cura 2.6 do Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Ulepszenie Wersji z 2.6 do 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Ulepsza konfigurację z Cura 2.1 do Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Ulepszenie Wersji z 2.1 do 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Ulepsza konfigurację z Cura 2.2 do Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Ulepszenie Wersji z 2.2 do 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Włącza możliwość generowania drukowalnej geometrii z pliku obrazu 2D." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Czytnik Obrazu" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Zapewnia połączenie z tnącym zapleczem CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Zaplecze CuraEngine" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Zapewnia Ustawienia dla Każdego Modelu." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Narzędzie Ustawień dla Każdego Modelu" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Zapewnia wsparcie dla czytania plików 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "Czytnik 3MF" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Zapewnia normalny widok siatki." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Widok Bryły" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Pozwala na ładowanie i wyświetlanie plików G-code." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "Czytnik G-code" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Zapewnia wsparcie dla eksportowania profili Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura Profile Writer" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Zapewnia wsparcie dla tworzenia plików 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF Writer" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Zapewnia czynności maszyny dla urządzeń Ultimaker (na przykład kreator poziomowania stołu, wybór ulepszeń itp.)." - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Czynności maszyny Ultimaker" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Zapewnia wsparcie dla importowania profili Cura." - -#~ 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." @@ -5718,14 +6294,6 @@ msgstr "Zapisywacz X3G" #~ 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" diff --git a/resources/i18n/pl_PL/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po index ad470759e6..6670b113b6 100644 --- a/resources/i18n/pl_PL/fdmextruder.def.json.po +++ b/resources/i18n/pl_PL/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Mariusz 'Virgin71' Matłosz \n" "Language-Team: reprapy.pl\n" diff --git a/resources/i18n/pl_PL/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po index faa1b46754..5113665656 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-14 14:44+0100\n" -"Last-Translator: Mariusz 'Virgin71' Matłosz \n" -"Language-Team: reprapy.pl\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" +"PO-Revision-Date: 2019-05-27 22:32+0200\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" @@ -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,7 @@ 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_center_is_zero label" @@ -237,7 +237,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,7 +247,7 @@ 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" +msgid "Outer Nozzle Diameter" msgstr "Zew. średnica dyszy" #: fdmprinter.def.json @@ -257,7 +257,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 +267,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 +277,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 +307,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 +317,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 +337,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 "" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -402,8 +402,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 +422,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 +432,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 +442,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 +472,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" @@ -1297,8 +1297,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 "" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1320,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 "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1337,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 "" #: 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 "" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1869,6 +1874,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 "" + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1979,6 +1994,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 "" + +#: 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 +2084,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 "" + +#: 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 "Przepływ Wieży Czyszczącej" + +#: 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,8 +2321,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 "" #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2159,6 +2374,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 "" + +#: 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 +2575,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 "" #: 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 "" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2929,6 +3154,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 +3434,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,12 +3500,12 @@ 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" +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." @@ -3396,8 +3636,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 "" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3775,14 +4015,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 "" #: 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 "" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4278,16 +4518,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 "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" @@ -4328,16 +4558,6 @@ 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ącej" - -#: 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" @@ -4348,6 +4568,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 "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" @@ -4630,8 +4860,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 "" #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4863,6 +5093,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5120,8 +5360,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 "" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5464,7 +5704,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 @@ -5474,7 +5714,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 @@ -5484,7 +5724,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 @@ -5494,8 +5734,8 @@ 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 Threshold" +msgstr "Próg zmiany warstw" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5712,6 +5952,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5772,6 +6162,138 @@ 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 "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." diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 355d2bb98b..3723f35cff 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-18 11:26+0100\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\n" +"PO-Revision-Date: 2019-07-28 06:51-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" @@ -16,9 +16,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.1.1\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes da Máquina" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistente de Modelo 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,16 +70,6 @@ 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 "Changelog" -msgstr "Registro de Alterações" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -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" @@ -95,37 +85,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "O perfil foi achatado & ativado." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Arquivo AMF" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -136,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "Arquivo X3g" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +142,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" @@ -206,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -238,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" @@ -267,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidade Removível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimir pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprime pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Conectado pela rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Status da autenticação" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Status da Autenticação" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Tentar novamente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Reenvia o pedido de acesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Acesso à impressora confirmado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Solicitar acesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "Não foi possível iniciar novo trabalho de impressão." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuração conflitante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando dados à impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Enviando Dados" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar com a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Conectado pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Dados Enviados" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Ver no Monitor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Impressão Concluída" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Vazio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Desconhecido" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Imprimir por Nuvem" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Imprimir por Nuvem" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Conectado por Nuvem" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Erro de nuvem" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Não foi possível exportar o trabalho de impressão." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Não foi possível transferir os dados para a impressora." @@ -541,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "hoje" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Houve um erro ao conectar à nuvem." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Enviando Trabalho de Impressão" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Enviando dados ao cluster remoto" +msgid "Uploading via Ultimaker Cloud" +msgstr "Transferindo via Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "Conectar à Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Não me pergunte novamente para esta impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Começar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Conectado!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Rever sua conexão" @@ -597,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitor" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível acessar informação de atualização." @@ -654,46 +654,11 @@ 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" msgstr "Perfis do Cura 15.04" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Avaliação" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -719,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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 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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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 foi possível fatiar" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:364 +#: /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 foi possível fatiar com os ajustes atuais. Os seguintes ajustes têm erros: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:388 +#: /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 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:397 +#: /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 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:406 +#: /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 foi possível fatiar porque há objetos associados com o Extrusor desabilitado %s." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:415 +#: /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 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" @@ -799,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Bico" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir Arquivo de Projeto" @@ -826,21 +791,21 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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" @@ -860,7 +825,7 @@ 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:121 +#: /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." @@ -921,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Pré-visualização" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parede Externa" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes Internas" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Contorno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Preenchimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Preenchimento de Suporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface de Suporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Suporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt (Saia)" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Percurso" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrações" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Outros" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Arquivo pré-fatiado {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Não Suportado" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL de arquivo inválida:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Não sobreposto" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Ajustes atualizados" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrusor(es) Desabilitado(s)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "Erro ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, 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:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Arquivo pré-fatiado {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Próximo" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Adicionar" + +#: /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:109 #, python-brace-format @@ -1170,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos Os Arquivos (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de Impressão" @@ -1201,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1223,7 +1239,7 @@ msgstr "Colocando Objetos" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1234,19 +1250,19 @@ 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 "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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Não Foi Encontrada Localização" @@ -1377,242 +1393,195 @@ msgstr "Registros" #: /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:341 +#: /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:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Carregando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando cena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Carregando interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Ajustes da Máquina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Impressora" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" -msgstr "Ajustes da Impressora" +msgstr "Ajustes de Impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (largura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profundidade)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Forma da plataforma de impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Origem no centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Mesa aquecida" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Sabor de G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Ajustes da Cabeça de Impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" -msgstr "Altura do eixo" +msgid "Gantry Height" +msgstr "Altura do Eixo" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-Code Inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "G-Code Final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /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:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -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" @@ -1622,7 +1591,7 @@ msgid "Install" msgstr "Instalar" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1638,15 +1607,15 @@ msgid "ratings" msgstr "notas" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Complementos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" @@ -1656,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Sua nota" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconhecido" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1777,7 +1743,7 @@ 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" @@ -1863,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Obtendo pacotes..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "Email" @@ -1878,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Fechar" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1969,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Carregando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Inacessivel" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Ocioso" @@ -2010,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Sem Título" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anônimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Requer mudanças na configuração" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Detalhes" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Impressora indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Primeira disponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Vidro" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2048,181 +1994,189 @@ msgstr "Enfileirados" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Ir ao Cura Connect" +msgid "Manage in browser" +msgstr "Gerir no navegador" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Trabalhos de impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Tempo total de impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Esperando por" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Ver histórico de impressão" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Conexão Existente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Conectar a Impressora de Rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Adicionar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Remover" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Endereço IP inválido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" 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." +msgstr "Entre o endereço IP ou nome de sua impressora na rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Abortando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Pausando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Termina %1 em %2" @@ -2326,44 +2280,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Sobrepor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alumínio" @@ -2373,110 +2327,112 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Conecta a uma impressora" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Guia de Ajustes do Cura" + +#: /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." +"- 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 a impressora está ligada.\n" -"- Verifique se a impressora está conectada à rede." +"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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "Por favor selecione uma impressora conectada à rede para monitorar." +msgid "Please connect your printer to the network." +msgstr "Por favor conecte sua impressora à rede." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Por favor conecte sua impressora Ultimaker à sua rede local." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /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/SimulationViewMenuComponent.qml:109 +#: /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/SimulationViewMenuComponent.qml:113 +#: /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/SimulationViewMenuComponent.qml:117 +#: /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/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Percursos" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Assistentes" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Perímetro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Preenchimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Topo / Base" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Parede Interna" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "mín" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "máx" @@ -2506,30 +2462,25 @@ 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 this data" -msgstr "Não desejo 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 this data to Ultimaker and help us improve Cura" -msgstr "Permitir enviar estes dados à Ultimaker para ajudar a melhorar o Cura" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Nenhuma impressão selecionada" +msgid "Allow sending anonymous data" +msgstr "Permitir enviar dados anônimos" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2578,19 +2529,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." @@ -2704,7 +2655,7 @@ msgid "Printer Group" msgstr "Grupo de Impressora" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes de perfil" @@ -2717,19 +2668,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2810,6 +2761,7 @@ 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" @@ -2900,22 +2852,23 @@ msgid "Previous" msgstr "Anterior" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Exportar" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Próximo" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Dica" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Genérico" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2926,150 +2879,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Lista de verificação" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Seleccionar Atualizações da Impressora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Bloco Olsson" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3120,170 +2974,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado para %1 com sucesso" @@ -3298,412 +3152,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Moeda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Fatiar automaticamente quando mudar ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Fatiar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da área de visualização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Exibir seções pendentes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Ampliar na direção do mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Renderização de câmera:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Ortogonal" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrindo e salvando arquivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Redimensionar modelos grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos minúsculos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selecionar modelos ao carregar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Sempre me perguntar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Sempre abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Sempre importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 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:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 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:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 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:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Mais informações" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Experimental" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 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:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Renomear" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Criar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Renomear Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Perfis default" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Perfis personalizados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar ajustes atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ajustes globais" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Mercado" @@ -3746,12 +3625,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "Ajuda (&H)" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3766,33 +3645,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "procurar nos ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não exibir este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter este ajuste visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar a visibilidade dos ajustes..." @@ -3804,31 +3683,36 @@ msgid "" "\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:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3839,7 +3723,7 @@ msgstr "" "\n" "Clique para restaurar o valor do perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3850,12 +3734,12 @@ msgstr "" "\n" "Clique para restaurar o valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizado" @@ -3870,27 +3754,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3907,8 +3786,8 @@ msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, u #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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" +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3941,10 +3820,10 @@ msgstr "" "\n" "Clique para abrir o gerenciador de perfis." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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. Arquivo de G-Code não pode ser modificado." +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" @@ -3976,7 +3855,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Enviar G-Code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4073,11 +3952,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Genérico" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4093,32 +3967,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Im&pressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir Como Extrusor Ativo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Habilitar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Desabilitar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "Plataforma de Impressão (&B)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Perfil" @@ -4128,7 +4002,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Posição da &câmera" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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)" @@ -4192,12 +4081,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Selecione configuração" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Veja o diagrama de compatibilidade de material" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Configurações" @@ -4222,20 +4106,20 @@ msgctxt "@label" msgid "Printer" msgstr "Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." -msgstr "" +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" @@ -4252,42 +4136,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &Recente" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /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:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Ver tipos" +msgid "View type" +msgstr "Tipo de Visão" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Oi " +msgid "Object list" +msgstr "Lista de objetos" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Sair da conta" @@ -4297,11 +4186,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Entrar" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4312,11 +4196,11 @@ 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" +"- Get exclusive access to print 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" +"- 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" @@ -4328,50 +4212,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Sem estimativa de tempo disponível" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Não Foi Possível Fatiar" +msgid "Unable to slice" +msgstr "Não foi possível fatiar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Especificação de tempo" +msgid "Time estimation" +msgstr "Estimativa de tempo" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Especificação de material" +msgid "Material estimation" +msgstr "Estimativa de material" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4393,285 +4282,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Impressoras pré-ajustadas" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Mercado" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fechando o Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar Pacote" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir Arquivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Adicionar Impressora" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4733,37 +4636,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Criar Novo Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Adiciona uma impressora ao Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Fabricante" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Nome da Impressora" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Adicionar Impressora" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4923,27 +4795,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Salvar Projeto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Plataforma de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Salvar" @@ -4973,30 +4850,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -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/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Vazio" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -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/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Adicionar uma impressora" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Reposicionar a plataforma de impressão atual" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Adicionar uma impressora de rede" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Adicionar uma impressora local" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Adicionar" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Nome da impressora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Provê uma maneira de alterar ajustes de máquina (tais como volume de impressão, tamanho do bico, etc.)." -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "Gerador de X3G" +msgid "Machine Settings action" +msgstr "Ação de Configurações de Máquina" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Buscar, gerenciar e instalar novos pacotes do Cura." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Ferramentas" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Provê a visão de Raios-X." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Visão de Raios-X" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Provê suporte à leitura de arquivos X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Leitor de X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Escreve em formato G-Code." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "Gerador de G-Code" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Verifica modelos e configurações de impressão por possíveis problema e dá sugestões." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Provê ações de máquina para atualização do firmware." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Atualizador de Firmware" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Cria um perfil de mudanças de qualidade achatado." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Achatador de Perfil" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Provê suporta à leitura de arquivos AMF." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "Leitor AMF" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Aceita G-Code e o envia a uma impressora. O complemento também pode atualizar o firmware." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Impressão USB" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Escreve em formato G-Code comprimido." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Gerador de G-Code Comprimido" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Provê suporte para a escrita de Ultimaker Format Packages (Pacotes de Formato da Ultimaker)." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "Gerador de UFP" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Provê um estágio de preparação no Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Estágio de Preparação" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Provê suporte a escrita e reconhecimento de drives a quente." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Conexão de Rede UM3" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Guia de Ajustes" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Provê um estágio de monitor no Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Estágio de Monitor" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Verifica por atualizações de firmware." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Verificador de Atualizações de Firmware" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Provê a Visão Simulada." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Visão Simulada" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Lê G-Code de um arquivo comprimido." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Leitor de G-Code Comprimido" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Extensão que permite scripts criados por usuários para pós-processamento" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Pós-processamento" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Cria uma malha apagadora para bloquear a impressão de suporte em certos lugares" + +#: SupportEraser/plugin.json +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." +msgstr "Submete informações de fatiamento anônimas. Pode ser desabilitado nas preferências." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Informação de fatiamento" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Provê capacidade de ler e escrever perfis de material baseado em XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Perfis de Material" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Provê suporte a importação de perfis de versões legadas do Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Leitor de Perfis de Cura Legado" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Provê suporte a importar perfis de arquivos G-Code." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "Leitor de Perfil de G-Code" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Atualiza configurações do Cura 3.2 para o Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Atualização de Versão de 3.2 para 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Atualiza configuração do Cura 3.3 para o Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Atualização de Versão de 3.3 para 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Atualiza configurações do Cura 2.5 para o Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Atualização de Versão de 2.5 para 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Atualiza configuração do Cura 2.7 para o Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Atualiza configurações do Cura 3.4 para o Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Atualiza configurações do Cura 3.0 para o Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Atualiza configurações do Cura 2.6 para o Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Atualização de Versão de 2.6 para 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Atualiza configurações do Cura 2.1 para o Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Atualização de Versão de 2.1 para 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Atualiza configurações do Cura 2.2 para o Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Atualização de Versão de 2.2 para 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Habilita a geração de geometria imprimível de arquivos de imagem 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Leitor de Imagens" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Provê a ligação ao backend de fatiamento CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine Backend" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Provê Ajustes Por Modelo." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Ferramenta de Ajustes Por Modelo" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Provê suporte à leitura de arquivos 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Leitor de 3MF" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Provê uma visualização de malha sólida normal." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Visão Sólida" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Permite carregar e exibir arquivos G-Code." + +#: GCodeReader/plugin.json +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." +msgstr "Provê suporte à exportação de perfis do Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Gravador de Perfis do Cura" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Assistente de Perfil de Impressão" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Provê suporte à escrita de arquivos 3MF." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Provê ações de máquina para impressoras da Ultimaker (tais como assistente de nivelamento de mesa, seleção de atualizações, etc.)." + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ações de máquina Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Provê suporte à importação de perfis do Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Leitor de Perfis do Cura" + +#~ 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" @@ -5337,62 +6253,6 @@ msgstr "Gerador de X3G" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Provê uma maneira de alterar ajustes de máquina (tais como volume de impressão, tamanho do bico, etc.)." - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Ação de Configurações de Máquina" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Buscar, gerenciar e instalar novos pacotes do Cura." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Ferramentas" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Provê a visão de Raios-X." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Visão de Raios-X" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Provê suporte à leitura de arquivos X3D." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "Leitor de X3D" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Escreve em formato G-Code." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "Gerador de G-Code" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Verifica modelos e configurações de impressão por possíveis problema e dá sugestões." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Verificador de Modelo" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Mostra alterações desde a última versão verificada." @@ -5409,14 +6269,6 @@ msgstr "Gerador de X3G" #~ msgid "Profile flatener" #~ msgstr "Achatador de Perfil" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Aceita G-Code e o envia a uma impressora. O complemento também pode atualizar o firmware." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "Impressão USB" - #~ 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." @@ -5425,278 +6277,6 @@ msgstr "Gerador de X3G" #~ msgid "UserAgreement" #~ msgstr "Acordo de Usuário" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Escreve em formato G-Code comprimido." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Gerador de G-Code Comprimido" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Provê suporte para a escrita de Ultimaker Format Packages (Pacotes de Formato da Ultimaker)." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "Gerador de UFP" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Provê um estágio de preparação no Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Estágio de Preparação" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Provê suporte a escrita e reconhecimento de drives a quente." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Complemento de Dispositivo de Escrita Removível" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Provê um estágio de monitor no Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Estágio de Monitor" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Verifica por atualizações de firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Verificador de Atualizações de Firmware" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Provê a Visão Simulada." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Visão Simulada" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Lê G-Code de um arquivo comprimido." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Leitor de G-Code Comprimido" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Extensão que permite scripts criados por usuários para pós-processamento" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Pós-processamento" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Cria uma malha apagadora para bloquear a impressão de suporte em certos lugares" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Apagador de Suporte" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Submete informações de fatiamento anônimas. Pode ser desabilitado nas preferências." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Informação de fatiamento" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Provê capacidade de ler e escrever perfis de material baseado em XML." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Perfis de Material" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Provê suporte a importação de perfis de versões legadas do Cura." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Leitor de Perfis de Cura Legado" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Provê suporte a importar perfis de arquivos G-Code." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "Leitor de Perfil de G-Code" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Atualiza configurações do Cura 3.2 para o Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Atualização de Versão de 3.2 para 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Atualiza configuração do Cura 3.3 para o Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Atualização de Versão de 3.3 para 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Atualiza configurações do Cura 2.5 para o Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Atualização de Versão de 2.5 para 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Atualiza configuração do Cura 2.7 para o Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Atualização de Versão de 2.7 para 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Atualiza configurações do Cura 3.4 para o Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Atualização de Versão de 3.4 para 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Atualiza configurações do Cura 3.0 para o Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Atualização de Versão 3.0 para 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Atualiza configurações do Cura 2.6 para o Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Atualização de Versão de 2.6 para 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Atualiza configurações do Cura 2.1 para o Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Atualização de Versão de 2.1 para 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Atualiza configurações do Cura 2.2 para o Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Atualização de Versão de 2.2 para 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Habilita a geração de geometria imprimível de arquivos de imagem 2D." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Leitor de Imagens" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Provê a ligação ao backend de fatiamento CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "CuraEngine Backend" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Provê Ajustes Por Modelo." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Ferramenta de Ajustes Por Modelo" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Provê suporte à leitura de arquivos 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "Leitor de 3MF" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Provê uma visualização de malha sólida normal." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Visão Sólida" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Permite carregar e exibir arquivos G-Code." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "Leitor de G-Code" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Provê suporte à exportação de perfis do Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Gravador de Perfis do Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Provê suporte à escrita de arquivos 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "Gerador de 3MF" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Provê ações de máquina para impressoras da Ultimaker (tais como assistente de nivelamento de mesa, seleção de atualizações, etc.)." - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ações de máquina Ultimaker" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Provê suporte à importação de perfis do Cura." - -#~ 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." @@ -5737,14 +6317,6 @@ msgstr "Gerador de X3G" #~ 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" diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index 8ea8ebea60..56015990a4 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-18 11:27+0100\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio \n" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index 755dd6e802..e613029ddb 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-18 11:27+0100\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" +"PO-Revision-Date: 2019-07-28 07:41-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.1.1\n" +"X-Generator: Poedit 2.2.3\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -238,8 +238,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 +248,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 +258,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 +268,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 +278,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 +308,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 +318,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 +338,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 +403,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 +423,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 +433,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 +443,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 +473,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" @@ -1298,8 +1298,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 +1309,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 +1338,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" @@ -1870,6 +1875,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 +1995,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 +2085,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 "" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2107,8 +2322,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" @@ -2160,6 +2375,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 +2576,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" @@ -2930,6 +3155,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 +3435,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,12 +3501,12 @@ 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" +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." @@ -3397,8 +3637,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" @@ -3776,14 +4016,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" @@ -4279,16 +4519,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" @@ -4329,16 +4559,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" @@ -4349,6 +4569,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" @@ -4631,8 +4861,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" @@ -4864,6 +5094,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5121,8 +5361,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" @@ -5465,8 +5705,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" @@ -5475,8 +5715,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" @@ -5485,8 +5725,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" @@ -5495,8 +5735,8 @@ 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 Threshold" +msgstr "Limite das Camadas Adaptativas" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5713,6 +5953,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5773,6 +6163,138 @@ 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 "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." diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index b3ec9a6ccb..be32a17c96 100644 --- a/resources/i18n/pt_PT/cura.po +++ b/resources/i18n/pt_PT/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:15+0100\n" -"Last-Translator: Portuguese \n" -"Language-Team: Paulo Miranda , Portuguese \n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Definições da Máquina" @@ -57,7 +57,7 @@ msgid "3D Model Assistant" msgstr "Assistente de Modelos 3D" # rever! -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -65,17 +65,11 @@ 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 "Changelog" -msgstr "Lista das Alterações" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -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" @@ -95,37 +89,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "O perfil foi nivelado & ativado." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Ficheiro AMF" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Ligado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -136,6 +129,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "Ficheiro X3g" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +146,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" @@ -208,10 +207,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -243,9 +242,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" @@ -272,91 +271,91 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Disco Externo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprimir através da rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Ligado através da rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Estado da autenticação" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Estado da autenticação" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Tentar de Novo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 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:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Acesso à impressora confirmado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Solicitar Acesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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." @@ -364,131 +363,132 @@ msgstr "Existe um problema com a configuração da sua Ultimaker, o qual impede # rever! # ver contexto! pode querer dizer # Configuração incompatível -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Divergência de Configuração" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "A enviar dados para a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "A Enviar Dados" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar com a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Ligado através da rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Dados Enviados" # rever! # contexto -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Ver no Monitor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, python-brace-format msgctxt "@info:status" msgid "The print job '{job_name}' was finished." @@ -496,51 +496,51 @@ msgstr "O trabalho de impressão '{job_name}' terminou." # rever! # Concluída? -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Impressão terminada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Vazio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Desconhecido" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Imprimir através da cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Imprimir através da cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Ligada através da cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Erro da cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Não foi possível exportar o trabalho de impressão." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Não foi possível carregar os dados para a impressora." @@ -555,48 +555,52 @@ msgctxt "@info:status" msgid "today" msgstr "hoje" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Ocorreu um erro na ligação à cloud." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "A enviar trabalho de impressão" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "A enviar dados para o cluster remoto" +msgid "Uploading via Ultimaker Cloud" +msgstr "A carregar através da cloud do Ultimaker" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" -msgstr "Ligar à Ultimaker Cloud" +msgstr "Ligar à cloud do Ultimaker" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Não perguntar novamente sobre esta impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Iniciar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Ligada!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Reveja a sua ligação" @@ -611,7 +615,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitorizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível aceder às informações de atualização." @@ -668,46 +672,11 @@ 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" msgstr "Perfis Cura 15.04" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Avaliação" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -733,56 +702,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:415 +#: /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 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" @@ -813,19 +782,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir ficheiro de projeto" @@ -840,18 +809,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -874,7 +843,7 @@ 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:121 +#: /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." @@ -935,243 +904,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Pré-visualizar" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parede Exterior" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes Interiores" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Revestimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Enchimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Enchimento dos Suportes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface dos Suportes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Suportes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Contorno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Deslocação" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrações" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Outro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Ficheiro pré-seccionado {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Não suportado" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL de ficheiro inválido:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Manter" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Definições atualizadas" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrusor(es) desativado(s)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "Falha ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, 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:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Ficheiro pré-seccionado {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Seguinte" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Adicionar" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Manter" # rever! # contexto @@ -1186,23 +1173,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos os Ficheiros (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de construção" @@ -1217,16 +1222,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 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:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1239,7 +1259,7 @@ msgstr "A posicionar objetos" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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" @@ -1250,20 +1270,20 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Não é Possível Posicionar" @@ -1281,7 +1301,12 @@ 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? @@ -1298,7 +1323,7 @@ msgstr "Mostrar relatório de falhas detalhado" #: /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:116 msgctxt "@action:button" @@ -1316,7 +1341,10 @@ 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:173 msgctxt "@title:groupbox" @@ -1390,244 +1418,197 @@ msgstr "Relatórios" #: /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:341 +#: /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:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "A carregar máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "A configurar cenário..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "A carregar interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Definições da máquina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Impressora" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" -msgstr "Definições da Impressora" +msgstr "Definições da impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Largura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profundidade)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Forma da base de construção" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Origem no centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Base aquecida" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Variante do G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +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:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X mín" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y mín" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X máx" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y máx" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Altura do pórtico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" -msgstr "G-code Inicial" +msgstr "G-code inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" -msgstr "G-code Final" +msgstr "G-code final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /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:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -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:18 msgctxt "@action:button" @@ -1635,7 +1616,7 @@ msgid "Install" msgstr "Instalar" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1651,15 +1632,15 @@ msgid "ratings" msgstr "classificações" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plug-ins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" @@ -1669,52 +1650,49 @@ msgctxt "@label" msgid "Your rating" msgstr "A sua classificação" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconhecido" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1790,7 +1768,7 @@ 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" @@ -1826,7 +1804,10 @@ 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:55 msgctxt "@action:button" @@ -1873,12 +1854,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "A obter pacotes..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1888,22 +1869,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Fechar" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1980,38 +1945,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "A carregar..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Inacessível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Inativa" @@ -2021,37 +1988,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Sem título" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anónimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Requer alterações na configuração" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Detalhes" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Impressora indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Primeira disponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Vidro" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2059,180 +2020,193 @@ msgstr "Em fila" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Ir para o Cura Connect" +msgid "Manage in browser" +msgstr "Gerir no browser" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Trabalhos em Impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Tempo de impressão total" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "A aguardar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Ver histórico de impressão" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Ligação Existente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 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:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Adicionar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Remover" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Ligar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Endereço IP inválido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" 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." +msgstr "Introduza o endereço IP ou o nome de anfitrião da sua impressora na rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "A cancelar..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "A colocar em pausa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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/MonitorPrintJobProgressBar.qml:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Termina %1 a %2" @@ -2336,44 +2310,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Ignorar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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 núcleo de impressão %1 de %2 para %3." +msgstr "Substituir o print core %1 de %2 para %3." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:87 +#: /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 placa de construção para %1 (isto não pode ser substituído)." +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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alumínio" @@ -2383,87 +2357,89 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Ligar a uma impressora" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Guia de definições do Cura" + +#: /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." -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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "Selecione uma impressora ligada à rede para monitorizar." +msgid "Please connect your printer to the network." +msgstr "Ligue a impressora à sua rede." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Ligue a sua impressora Ultimaker à sua rede local." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /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/SimulationViewMenuComponent.qml:109 +#: /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/SimulationViewMenuComponent.qml:113 +#: /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/SimulationViewMenuComponent.qml:117 +#: /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/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Deslocações" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Auxiliares" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Invólucro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Enchimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 Camadas Superiores Detalhadas" @@ -2471,22 +2447,22 @@ msgstr "5 Camadas Superiores Detalhadas" # rever! # todas as strings com a frase # Topo / Base ?? -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Superior / Inferior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Parede Interior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "mín" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "máx" @@ -2516,30 +2492,25 @@ 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 this data" -msgstr "Não pretendo 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 this data to Ultimaker and help us improve Cura" -msgstr "Permita o envio destes dados ao Ultimaker e ajude-nos a melhorar o Cura" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Nenhuma impressão selecionada" +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" @@ -2589,19 +2560,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." @@ -2715,7 +2686,7 @@ msgid "Printer Group" msgstr "Grupo da Impressora" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Definições do perfil" @@ -2728,13 +2699,13 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 msgctxt "@action:label" msgid "Not in profile" msgstr "Inexistente no perfil" @@ -2742,7 +2713,7 @@ msgstr "Inexistente no perfil" # rever! # contexto?! #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2823,6 +2794,7 @@ 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" @@ -2913,22 +2885,23 @@ msgid "Previous" msgstr "Anterior" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Exportar" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Seguinte" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Sugestão" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Genérico" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2939,157 +2912,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Lista de verificação" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Selecionar Atualizações da Impressora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Block" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3140,170 +3007,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado com êxito para %1" @@ -3318,416 +3185,441 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Moeda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 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:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seccionar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da janela" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar Saliências (Overhangs)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 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:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Composição de câmara: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Perspetiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Ortogonal" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir e guardar ficheiros" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Redimensionar modelos demasiado grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos extremamente pequenos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selecionar os modelos depois de abertos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Perguntar sempre isto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir sempre como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar sempre modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Descartar sempre definições alteradas" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 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:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 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:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" -msgstr "Mais informação" +msgstr "Mais informações" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Experimental" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 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:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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)" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Mudar Nome" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Criar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Mudar Nome do Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Perfis predefinidos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Perfis personalizados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar alterações atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Definições Globais" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Mercado" @@ -3770,12 +3662,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Ajuda" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3790,33 +3682,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "procurar definições" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Esconder esta definição" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter esta definição visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidade das definições..." @@ -3831,24 +3723,32 @@ 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:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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." @@ -3857,33 +3757,39 @@ 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 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:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 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/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizado" @@ -3898,7 +3804,7 @@ 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:29 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 msgctxt "@label" msgid "Support" msgstr "Suportes" @@ -3906,35 +3812,25 @@ msgstr "Suportes" # rever! # collapse ? # desmoronar? desabar? -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:70 +#: /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." -# 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/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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 (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." +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:175 msgctxt "@label" msgid "Layer Height" -msgstr "Espessura da Camada" +msgstr "Espessura das Camadas" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 msgctxt "@tooltip" @@ -3943,8 +3839,8 @@ msgstr "Algumas definições do perfil foram modificadas. Se pretender alterá-l #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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" +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3972,11 +3868,14 @@ 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." +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/PrintSetupSelector.qml:19 +#: /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." +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 @@ -4015,7 +3914,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Enviar G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4112,11 +4011,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Genérico" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4132,32 +4026,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir como Extrusor Ativo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Ativar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Desativar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "&Base de construção" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Perfil" @@ -4167,10 +4061,25 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posição da câmara" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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" @@ -4231,12 +4140,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Selecionar configuração" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Ver o gráfico de compatibilidade de materiais" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Configurações" @@ -4261,17 +4165,17 @@ msgctxt "@label" msgid "Printer" msgstr "Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 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." @@ -4291,42 +4195,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &Recente" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /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:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Ver tipos" +msgid "View type" +msgstr "Ver tipo" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Olá " +msgid "Object list" +msgstr "Lista de objetos" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Terminar sessão" @@ -4336,11 +4245,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Iniciar sessão" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4351,8 +4255,11 @@ 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" +"- 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" @@ -4364,50 +4271,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Nenhuma estimativa de tempo disponível" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Não é possível Seccionar" +msgid "Unable to slice" +msgstr "Não é possível seccionar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Especificação de tempo" +msgid "Time estimation" +msgstr "Estimativa de tempo" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Especificação do material" +msgid "Material estimation" +msgstr "Estimativa de material" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4429,287 +4341,301 @@ msgctxt "@label" msgid "Preset printers" msgstr "Impressoras predefinidas" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Mercado" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /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:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fechar Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar Pacote" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir ficheiro(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Adicionar Impressora" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4727,7 +4653,9 @@ 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?" +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" @@ -4769,34 +4697,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Criar novo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Adicionar uma impressora ao Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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\nSe 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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Fabricante" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Nome da impressora" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Adicionar Impressora" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4817,7 +4717,9 @@ 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:" +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:134 msgctxt "@label" @@ -4957,27 +4859,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Guardar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Base de construção" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Guardar" @@ -5007,30 +4914,1077 @@ msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -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/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Vazio" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Dispor em todas as bases" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Adicionar uma impressora" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Dispor só na base ativa" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Adicionar uma impressora em rede" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Adicionar uma impressora sem rede" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Adicionar" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Nome da impressora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Proporciona uma forma de alterar as definições da máquina (tal como o volume de construção, o tamanho do nozzle, etc.)." -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "Função Definições da Máquina" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Encontre, organize e instale novos pacotes para o Cura." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Toolbox" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Permite a visualização em Raio-X." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Vista Raio-X" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Fornece suporte para ler ficheiros X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Leitor de X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Grava o g-code num ficheiro." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "Gravador de G-code" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Verifica potenciais problemas de impressão nos modelos e definições de impressão, e oferece sugestões." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Disponibiliza as ações da máquina para atualizar o firmware." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Atualizador de firmware" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Cria um perfil de alterações de qualidade aplanado." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Aplanador de perfis" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Fornece suporte para ler ficheiros AMF." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "Leitor de AMF" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Aceita G-Codes e envia-os para uma impressora. O plug-in também pode atualizar firmware." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Impressão USB" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Grava o g-code num arquivo comprimido." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Gravador de G-code comprimido" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Permite a gravação de arquivos Ultimaker Format." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "Gravador de UFP" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Fornece uma fase de preparação no Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Fase de preparação" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Fornece suporte de ligação da unidade amovível e suporte de gravação." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Ligação de rede UM3" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Guia de definições" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Fornece uma fase de monitorização no Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Fase de monitorização" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Procura e verifica se existem atualizações de firmware." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Verificador Atualizações Firmware" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Permite a visualização por camadas." + +# rever! +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Visualização por camadas" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Lê o g-code a partir de um arquivo comprimido." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Leitor de G-code comprimido" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Extensão que permite a utilização de scripts criados pelo utilizador para efeitos de pós-processamento" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Pós-Processamento" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Cria um objecto usado para eliminar a impressão de suportes em certas zonas" + +#: SupportEraser/plugin.json +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." +msgstr "Envia informações anónimas sobre o seccionamento. Pode ser desativado nas preferências." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Informações do seccionamento" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Fornece capacidades para ler e gravar perfis de material com base em XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Perfis de Materiais" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Permite importar perfis de versões antigas do Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Leitor de perfis antigos do Cura" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Permite importar perfis a partir de ficheiros g-code." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "Leitor de perfis G-code" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Atualiza as configurações do Cura 3.2 para o Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Atualização da versão 3.2 para 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Atualiza as configurações do Cura 3.3 para o Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Atualização da versão 3.3 para 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Atualiza as configurações do Cura 2.5 para o Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Atualização da versão 2.5 para 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Atualiza as configurações do Cura 2.7 para o Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Atualiza as configurações do Cura 3.4 para o Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Atualiza as configurações do Cura 3.0 para o Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Atualiza as configurações do Cura 2.6 para o Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Atualização da versão 2.6 para 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Atualiza as configurações do Cura 2.1 para o Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Atualização da versão 2.1 para 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Atualiza as configurações do Cura 2.2 para o Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Atualização da versão 2.2 para 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Permite gerar geometria imprimível a partir de ficheiros de imagem 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Leitor de imagens" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Fornece a hiperligação para o back-end de seccionamento do CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Back-end do CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Fornece as definições por-modelo." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Ferramenta de definições Por-Modelo" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Fornece suporte para ler ficheiros 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Leitor de 3MF" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Permite a visualização (simples) dos objetos como sólidos." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Vista Sólidos" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Permite abrir e visualizar ficheiros G-code." + +#: GCodeReader/plugin.json +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 +msgctxt "description" +msgid "Provides support for exporting Cura profiles." +msgstr "Possibilita a exportação de perfis do Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Gravador de perfis Cura" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Assistente de perfis de impressão" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Possiblita a gravação de ficheiros 3MF." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Disponibiliza funções especificas para as máquinas Ultimaker (tais como, o assistente de nivelamento da base, seleção de atualizações, etc.)." + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Funções para impressoras Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Fornece suporte para importar perfis Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Leitor de Perfis Cura" + +#~ 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" @@ -5239,7 +6193,6 @@ msgstr "X3GWriter" #~ "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" @@ -5395,62 +6348,6 @@ msgstr "X3GWriter" #~ 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 "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Proporciona uma forma de alterar as definições da máquina (tal como o volume de construção, o tamanho do nozzle, etc.)." - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Função Definições da Máquina" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Encontre, organize e instale novos pacotes para o Cura." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Toolbox" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Permite a visualização em Raio-X." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Vista Raio-X" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Fornece suporte para ler ficheiros X3D." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "Leitor de X3D" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Grava o g-code num ficheiro." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "Gravador de G-code" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Verifica potenciais problemas de impressão nos modelos e definições de impressão, e oferece sugestões." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Verificador de Modelos" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Mostra as novas alterações efetuadas desde a última versão." @@ -5459,14 +6356,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "Lista das Alterações" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Disponibiliza as ações da máquina para atualizar o firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Atualizador de firmware" - # rever! # contexto! # flattend - aplanado? nivelado? limpo? basico? @@ -5478,14 +6367,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "Aplanador de perfis" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Aceita G-Codes e envia-os para uma impressora. O plug-in também pode atualizar firmware." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "Impressão através de USB" - #~ 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." @@ -5499,281 +6380,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "Contrato de Utilizador" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Grava o g-code num arquivo comprimido." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Gravador de G-code comprimido" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Permite a gravação de arquivos Ultimaker Format." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "Gravador de UFP" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Fornece uma fase de preparação no Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Fase de preparação" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Fornece suporte de ligação da unidade amovível e suporte de gravação." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Plug-in de dispositivo de saída da unidade amovível" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Fornece uma fase de monitorização no Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Fase de monitorização" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Procura e verifica se existem atualizações de firmware." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Verificador Atualizações Firmware" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Permite a visualização por camadas." - -# rever! -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Vista Camadas" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Lê o g-code a partir de um arquivo comprimido." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Leitor de G-code comprimido" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Extensão que permite a utilização de scripts criados pelo utilizador para efeitos de pós-processamento" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Pós-Processamento" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Cria um objecto usado para eliminar a impressão de suportes em certas zonas" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Eliminador de suportes" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Envia informações anónimas sobre o seccionamento. Pode ser desativado nas preferências." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Informações do seccionamento" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Fornece capacidades para ler e gravar perfis de material com base em XML." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Perfis de Materiais" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Permite importar perfis de versões antigas do Cura." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Leitor de perfis antigos do Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Permite importar perfis a partir de ficheiros g-code." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "Leitor de perfis G-code" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Atualiza as configurações do Cura 3.2 para o Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Atualização da versão 3.2 para 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Atualiza as configurações do Cura 3.3 para o Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Atualização da versão 3.3 para 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Atualiza as configurações do Cura 2.5 para o Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Atualização da versão 2.5 para 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Atualiza as configurações do Cura 2.7 para o Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Atualização da versão 2.7 para 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Atualiza as configurações do Cura 3.4 para o Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Atualização da versão 3.4 para 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Atualiza as configurações do Cura 3.0 para o Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Atualização da versão 3.0 para 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Atualiza as configurações do Cura 2.6 para o Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Atualização da versão 2.6 para 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Atualiza as configurações do Cura 2.1 para o Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Atualização da versão 2.1 para 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Atualiza as configurações do Cura 2.2 para o Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Atualização da versão 2.2 para 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Permite gerar geometria imprimível a partir de ficheiros de imagem 2D." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Leitor de imagens" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Fornece a hiperligação para o back-end de seccionamento do CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Back-end do CuraEngine" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Fornece as definições por-modelo." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Ferramenta de definições Por-Modelo" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Fornece suporte para ler ficheiros 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "Leitor de 3MF" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Permite a visualização (simples) dos objetos como sólidos." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Vista Sólidos" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Permite abrir e visualizar ficheiros G-code." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "Leitor de G-code" - -# rever! -# Fornece suporte para exportar perfis Cura. -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Possibilita a exportação de perfis do Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Gravador de perfis Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Possiblita a gravação de ficheiros 3MF." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "Gravador 3MF" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Disponibiliza funções especificas para as máquinas Ultimaker (tais como, o assistente de nivelamento da base, seleção de atualizações, etc.)." - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Funções para impressoras Ultimaker" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Fornece suporte para importar perfis Cura." - -#~ 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." @@ -5814,14 +6420,6 @@ msgstr "X3GWriter" #~ 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" @@ -5867,7 +6465,6 @@ msgstr "X3GWriter" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "Não foi possível exportar utilizando a qualidade \"{}\"!\n" #~ "Foi revertido para \"{}\"." @@ -6044,7 +6641,6 @@ msgstr "X3GWriter" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "Alguns modelos poderão não ser impressos com a melhor qualidade devido ás dimensões do objecto e aos materiais escolhidos para os modelos: {model_names}.\n" #~ "Sugestões que poderão ser úteis para melhorar a qualidade da impressão dos modelos:\n" #~ "1) Utilize cantos arredondados.\n" @@ -6061,7 +6657,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "Não foram encontrados quaisquer modelos no seu desenho. Por favor verifique novamente o conteúdo do desenho e confirme que este inclui uma peça ou uma \"assembly\"?\n" #~ "\n" #~ "Obrigado!" @@ -6072,7 +6667,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Foram encontradas mais do que uma peça ou uma \"assembly\" no seu desenho. De momento só são suportados ficheiros com uma só peça ou só uma \"assembly\".\n" #~ "\n" #~ "As nossa desculpas!" @@ -6101,7 +6695,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Caro Cliente,\n" #~ "Não foi possível encontrar uma instalação válida do SolidWorks no seu sistema. O que significa que o SolidWorks não está instalado ou não dispõe de uma licença válida. Por favor verifique se o próprio SolidWorks funciona sem qualquer problema e/ou contacte o seu ICT.\n" #~ "\n" @@ -6116,7 +6709,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Caro cliente,\n" #~ "Está atualmente a executar este plug-in num sistema operativo que não o Windows. Este plug-in apenas funciona no Windows com o SolidWorks instalado e com uma licença válida. Instale este plug-in num computador com o Windows e com o SolidWorks instalado.\n" #~ "\n" @@ -6221,7 +6813,6 @@ msgstr "X3GWriter" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Abrir o diretório\n" #~ "com macro e ícone" diff --git a/resources/i18n/pt_PT/fdmextruder.def.json.po b/resources/i18n/pt_PT/fdmextruder.def.json.po index 8da410c2cb..accda6bab4 100644 --- a/resources/i18n/pt_PT/fdmextruder.def.json.po +++ b/resources/i18n/pt_PT/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-14 14:15+0100\n" "Last-Translator: Portuguese \n" "Language-Team: Paulo Miranda , Portuguese \n" diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po index e7253bedd5..06f1795490 100644 --- a/resources/i18n/pt_PT/fdmprinter.def.json.po +++ b/resources/i18n/pt_PT/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-14 14:15+0100\n" -"Last-Translator: Portuguese \n" -"Language-Team: Paulo Miranda , Portuguese \n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -236,8 +240,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 +250,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 +260,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 +270,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 +280,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 +301,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 +310,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 +321,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 +342,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 +407,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 +427,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 +437,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 +447,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 +477,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 +733,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 +819,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" @@ -1236,7 +1240,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" @@ -1330,13 +1334,14 @@ 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 +1369,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 +1384,17 @@ 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" @@ -1695,7 +1705,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" @@ -1735,7 +1747,7 @@ 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 bocal do extrusor de revestimento pode já ultrapassar o centro da parede neste ponto." +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" @@ -1745,7 +1757,7 @@ 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 bocal do extrusor de revestimento pode já ultrapassar o centro da parede." +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_wipe_dist label" @@ -1932,6 +1944,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 +2064,87 @@ 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 +2155,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 +2348,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 +2403,9 @@ 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" @@ -2235,6 +2459,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 +2666,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 +2674,15 @@ 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 +2897,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 +3096,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" @@ -2894,7 +3128,7 @@ 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 or to only comb within the infill." -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 ou apenas efetuar o combing no enchimento." +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" @@ -2999,7 +3233,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 +3253,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 +3267,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 +3275,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 +3433,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 +3565,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 +3634,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" +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." #: 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,8 +3770,9 @@ 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." -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ó." +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 msgctxt "support_offset label" @@ -3903,14 +4153,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" @@ -3983,17 +4233,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" @@ -4013,7 +4263,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" @@ -4035,7 +4285,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" @@ -4070,12 +4322,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" @@ -4136,7 +4388,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" @@ -4408,16 +4660,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" @@ -4458,16 +4700,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" @@ -4478,6 +4710,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" @@ -4785,8 +5027,9 @@ 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" @@ -4796,7 +5039,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" @@ -5008,7 +5251,7 @@ 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." +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" @@ -5018,7 +5261,17 @@ 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." +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." +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." # rever! # Is the english string correct? for the label? @@ -5291,8 +5544,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" @@ -5524,7 +5777,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" @@ -5633,8 +5888,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" @@ -5643,8 +5898,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" @@ -5653,8 +5908,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" @@ -5663,8 +5918,8 @@ 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 Threshold" +msgstr "Limiar das camadas adaptáveis" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5709,7 +5964,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" @@ -5729,7 +5984,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" @@ -5881,6 +6136,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5941,6 +6346,144 @@ 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 "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." diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index df657758a2..481960a783 100644 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -5,20 +5,20 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:45+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Ruslan Popov , Russian \n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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.1.1\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Параметры принтера" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Помощник по 3D-моделям" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,16 +70,6 @@ msgstr "" "

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

\n" "

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

" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Changelog" -msgstr "Журнал изменений" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Показать журнал изменений" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -95,37 +85,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Профиль был нормализован и активирован." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Файл AMF" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Печать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "Подключено через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -136,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "Файл X3g" +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 +msgctxt "X3G Writer File Description" +msgid "X3G File" +msgstr "Файл X3G" + #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +142,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" @@ -206,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Ошибка" @@ -238,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Внимание" @@ -267,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Внешний носитель" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Подключен по сети." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Подключен по сети. Нет доступа к управлению принтером." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Состояние аутентификации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Состояние аутентификации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Повторить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Послать запрос доступа ещё раз" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Доступ к принтеру получен" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Запросить доступ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Отправить запрос на доступ к принтеру" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "Не удалось начать новое задание печати." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Несовпадение конфигурации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Вы уверены, что желаете печатать с использованием выбранной конфигурации?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Отправка данных на принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Отправка данных" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Синхронизация с вашим принтером" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Подключен по сети" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 msgctxt "@info:status" msgid "Print job was successfully sent to the printer." msgstr "Задание печати успешно отправлено на принтер." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Данные отправлены" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Просмотр на мониторе" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Печать завершена" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Пусто" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Неизвестн" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Печать через облако" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Печать через облако" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Подключено через облако" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Ошибка облака" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Облако не экспортировало задание печати." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Облако не залило данные на принтер." @@ -541,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "сегодня" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "При подключении к облаку возникла ошибка." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Отправка задания печати" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Отправка данных на удаленный кластер" +msgid "Uploading via Ultimaker Cloud" +msgstr "Заливка через облако Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 msgctxt "@info:status" msgid "Send and monitor print jobs from anywhere using your Ultimaker account." msgstr "Отправляйте и отслеживайте задания печати из любого места с помощью вашей учетной записи Ultimaker." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" -msgstr "Подключиться к Ultimaker Cloud" +msgstr "Подключиться к облаку Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Не спрашивать меня снова для этого принтера." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Приступить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 msgctxt "@info:status" msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." msgstr "Теперь вы можете отправлять и отслеживать задания печати из любого места с помощью вашей учетной записи Ultimaker." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Подключено!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Проверьте свое подключение" @@ -597,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Монитор" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Не могу получить информацию об обновлениях." @@ -654,46 +654,11 @@ 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" msgstr "Профили Cura 15.04" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Оценивание" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -719,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF изображение" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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 "Информация" @@ -799,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Сопло" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Открыть файл проекта" @@ -826,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "Параметры G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -860,7 +825,7 @@ msgctxt "@info:backup_status" msgid "There was an error listing your backups." msgstr "При составлении списка ваших резервных копий возникла ошибка." -#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:121 +#: /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 "При попытке восстановления данных из резервной копии возникла ошибка." @@ -921,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Предварительный просмотр" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Внешняя стенка" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Внутренние стенки" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Покрытие" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Заполнение" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Заполнение поддержек" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Связующий слой поддержек" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Поддержки" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Юбка" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Перемещение" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Откаты" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Другое" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Предообратка файла {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Не поддерживается" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Неправильный URL-адрес файла:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Не переопределен" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Настройки обновлены" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Экструдер (-ы) отключен (-ы)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 msgctxt "@info:title" msgid "Export succeeded" msgstr "Экспорт успешно завершен" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "Не удалось импортировать профиль из {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Успешно импортирован профиль {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Собственный профиль" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "У профайла отсутствует тип качества." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Предообратка файла {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Следующий" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +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:109 #, python-brace-format @@ -1170,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Все файлы (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Неизвестно" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Собственный материал" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Своё" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Объём печати" @@ -1201,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Нет связи с сервером учетных записей Ultimaker." +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Дайте необходимые разрешения при авторизации в этом приложении." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Возникла непредвиденная ошибка при попытке входа в систему. Повторите попытку." + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1223,7 +1239,7 @@ msgstr "Размещение объектов" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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 "Невозможно разместить все объекты внутри печатаемого объёма" @@ -1234,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Не могу найти место" @@ -1377,242 +1393,195 @@ msgstr "Журналы" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Отправить отчёт" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Загрузка принтеров..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Настройка сцены..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Загрузка интерфейса..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Выбранная модель слишком мала для загрузки." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Параметры принтера" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Принтер" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Параметры принтера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Ширина)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Глубина)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Высота)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Форма стола" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Начало координат в центре" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Нагреваемый стол" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "Вариант G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Параметры головы" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Высота портала" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Количество экструдеров" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "Стартовый G-код" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Команды в G-коде, которые будут выполнены в самом начале." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "Завершающий G-код" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Диаметр сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Диаметр совместимого материала" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Номер охлаждающего вентилятора" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Завершающий G-код экструдера" @@ -1622,7 +1591,7 @@ msgid "Install" msgstr "Установить" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Установлено" @@ -1638,15 +1607,15 @@ msgid "ratings" 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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Плагины" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Материалы" @@ -1656,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Ваша оценка" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Неизвестно" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1777,7 +1743,7 @@ 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 "Установлено" @@ -1863,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Выборка пакетов..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "Электронная почта" @@ -1878,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Закрыть" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1969,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Стекло" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 msgctxt "@info" -msgid "These options are not available because you are monitoring a cloud printer." -msgstr "Указанные опции недоступны, поскольку вы отслеживаете облачный принтер." +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Для удаленного управления очередью необходимо обновить программное обеспечение принтера." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Загрузка..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Недоступен" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Недостижимо" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Простой" @@ -2010,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Без имени" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Анонимн" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Необходимо внести изменения конфигурации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Подробности" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Недоступный принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "Первое доступное" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Стекло" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2048,181 +1994,190 @@ msgstr "Запланировано" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Перейти к Cura Connect" +msgid "Manage in browser" +msgstr "Управление через браузер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Задания печати" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Общее время печати" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Ожидание" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Просмотреть архив печати" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Текущее подключение" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Подключение к сетевому принтеру" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Добавить" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Выберите свой принтер из приведенного ниже списка:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Правка" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Удалить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Обновить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Принтер по этому адресу ещё не отвечал." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Подключить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Недействительный IP-адрес" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Адрес принтера" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" 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:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "Подготовка..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "Прерывается..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /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:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Завершение %1 в %2" @@ -2326,7 +2281,7 @@ msgctxt "@action:button" msgid "Override" msgstr "Переопределить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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:" @@ -2334,37 +2289,37 @@ msgstr[0] "Для назначенного принтера %1 требуетс msgstr[1] "Для назначенного принтера %1 требуются следующие изменения конфигурации:" msgstr[2] "Для назначенного принтера %1 требуются следующие изменения конфигурации:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Алюминий" @@ -2374,110 +2329,109 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Подключение к принтеру" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Руководство по параметрам Cura" + +#: /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." -msgstr "" -"Проверьте наличие подключения к принтеру:\n" -"- Убедитесь, что принтер включен.\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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "Выберите принтер, подключенный к сети, который необходимо отслеживать." +msgid "Please connect your printer to the network." +msgstr "Подключите принтер к сети." -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "Подключите ваш принтер Ultimaker к своей локальной сети." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Цвет материала" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Тип линии" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Скорость подачи" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Толщина слоя" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Режим совместимости" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Перемещения" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Помощники" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Ограждение" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Заполнение" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Показать только верхние слои" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Дно / крышка" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Внутренняя стенка" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "мин." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "макс." @@ -2507,30 +2461,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "Разрешить отправку описанных данных в Ultimaker для улучшения Cura" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Печать не выбрана" +msgid "Allow sending anonymous data" +msgstr "Разрешить отправку анонимных данных" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2579,19 +2528,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." @@ -2705,7 +2654,7 @@ msgid "Printer Group" msgstr "Группа принтеров" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Параметры профиля" @@ -2718,19 +2667,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "Название" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 msgctxt "@action:label" msgid "Not in profile" msgstr "Вне профиля" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2813,6 +2762,7 @@ 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 "Войти" @@ -2903,22 +2853,23 @@ msgid "Previous" msgstr "Предыдущий" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Экспорт" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Следующий" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "Кончик" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Универсальные" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2929,150 +2880,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Контрольный список" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Выбор компонентов для обновления" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker 2." msgstr "Пожалуйста, укажите любые изменения, внесённые в Ultimaker 2." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Блок Олссона" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3123,170 +2975,170 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Вы уверены, что желаете прервать печать?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "Информация об адгезии" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "Импорт" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Материал успешно экспортирован в %1" @@ -3301,412 +3153,437 @@ 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:48 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:61 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:68 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:75 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:83 msgctxt "@title:column" msgid "Unit" msgstr "Единица" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Общее" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Интерфейс" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Язык:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Валюта:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Тема:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Нарезать автоматически при изменении настроек." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Нарезать автоматически" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Поведение окна" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Отобразить нависания" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Центрировать камеру на выбранном объекте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Следует ли инвертировать стандартный способ увеличения в Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Инвертировать направление увеличения камеры." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Увеличивать по мере движения мышкой?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "В ортогональной проекции изменение масштаба мышью не поддерживается." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Увеличивать по движению мышки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Удостовериться, что модели размещены рядом" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Автоматически опускать модели на стол" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Показывать предупреждающее сообщение в средстве считывания G-кода." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Предупреждающее сообщение в средстве считывания G-кода" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Должен ли слой быть переведён в режим совместимости?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Просматривать слои в режиме совместимости (требуется перезапуск)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Рендеринг камеры какого типа следует использовать?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Рендеринг камеры: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Перспективная" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Ортогональная" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Открытие и сохранение файлов" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Масштабировать большие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Масштабировать очень маленькие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Выбрать модели после их загрузки?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Выбрать модели при загрузке" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Добавить префикс принтера к имени задачи" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Показывать сводку при сохранении файла проекта?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Показывать сводку при сохранении проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Стандартное поведение при открытии файла проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Стандартное поведение при открытии файла проекта: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Всегда спрашивать меня" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Всегда открывать как проект" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Всегда импортировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Профили" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Всегда сбрасывать измененные настройки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Всегда передавать измененные настройки новому профилю" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Приватность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Проверять обновления при старте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Отправлять (анонимно) информацию о печати" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Дополнительная информация" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Экспериментальное" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "Использовать функционал нескольких рабочих столов" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Принтеры" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Переименовать" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 msgctxt "@label" msgid "Create" msgstr "Создать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:105 msgctxt "@label" msgid "Duplicate" msgstr "Дублировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Создать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Укажите имя для данного профиля." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Скопировать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Переименовать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Импорт профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Экспорт профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Принтер: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Профили по умолчанию" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Собственные профили" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Обновить профиль текущими параметрами" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Сбросить текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Ваши текущие параметры совпадают с выбранным профилем." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Общие параметры" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Магазин" @@ -3749,12 +3626,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "Справка" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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 "Вы действительно желаете начать новый проект? Это действие очистит область печати и сбросит все несохранённые настройки." @@ -3769,33 +3646,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "параметры поиска" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Скопировать значение для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Копировать все измененные значения для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Спрятать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Не показывать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Оставить этот параметр видимым" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Видимость параметров..." @@ -3811,27 +3688,32 @@ msgstr "" "\n" "Щёлкните, чтобы сделать эти параметры видимыми." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Значение получается из параметров каждого экструдера " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3842,7 +3724,7 @@ msgstr "" "\n" "Щёлкните для восстановления значения из профиля." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3853,12 +3735,12 @@ msgstr "" "\n" "Щёлкните для восстановления вычисленного значения." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Рекомендован" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Свое" @@ -3873,27 +3755,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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 "Разрешает печать каймы или подложки. Это добавляет плоскую область вокруг или под вашим объектом, которую легко удалить после печати." @@ -3910,8 +3787,8 @@ msgstr "В некоторые настройки профиля были вне #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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 "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти настройки для задействования данного профиля качества" +msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +msgstr "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти параметры для задействования данного профиля качества." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3944,9 +3821,9 @@ msgstr "" "\n" "Нажмите для открытия менеджера профилей." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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." +msgid "Print setup disabled. G-code file can not be modified." msgstr "Настройка печати отключена. Невозможно изменить файл с G-кодом." #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 @@ -3979,7 +3856,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "Отправить G-код" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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 (Ввод) для отправки команды." @@ -4076,11 +3953,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Избранные" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Универсальные" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4096,32 +3968,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Установить как активный экструдер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Включить экструдер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Отключить экструдер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "Рабочий стол" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "Профиль" @@ -4131,7 +4003,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Положение камеры" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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 "Рабочий стол" @@ -4197,12 +4084,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Выберите конфигурации" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "См. таблицу совместимости материалов" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Конфигурации" @@ -4227,17 +4109,17 @@ msgctxt "@label" msgid "Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Использовать клей для лучшего прилипания с этой комбинацией материалов." @@ -4257,42 +4139,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Открыть недавние" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Идёт печать" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Имя задачи" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Время печати" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Осталось примерно" #: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Просмотр типов" +msgid "View type" +msgstr "Просмотр типа" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Приветствуем! " +msgid "Object list" +msgstr "Список объектов" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Выйти" @@ -4302,11 +4189,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Войти" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4317,11 +4199,11 @@ 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" +"- 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" @@ -4333,50 +4215,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Оценка времени недоступна" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 msgctxt "@button" msgid "Preview" msgstr "Предварительный просмотр" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "Невозможно нарезать" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Настройка расчета времени" +msgid "Time estimation" +msgstr "Оценка времени" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Характеристики материала" +msgid "Material estimation" +msgstr "Оценка материала" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4398,122 +4285,132 @@ msgctxt "@label" msgid "Preset printers" msgstr "Предварительно настроенные принтеры" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "Управление принтерами" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Управление материалами..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" @@ -4521,7 +4418,7 @@ msgstr[0] "Удалить выбранную модель" msgstr[1] "Удалить выбранные модели" msgstr[2] "Удалить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" @@ -4529,7 +4426,7 @@ msgstr[0] "Центрировать выбранную модель" msgstr[1] "Центрировать выбранные модели" msgstr[2] "Центрировать выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" @@ -4537,149 +4434,153 @@ msgstr[0] "Размножить выбранную модель" msgstr[1] "Размножить выбранные модели" msgstr[2] "Размножить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Удалить модель" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Дублировать модель..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Магазин" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Закрытие Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Вы уверены, что хотите выйти из Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Установить пакет" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Открыть файл(ы)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Добавление принтера" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4742,37 +4643,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Создать новый профиль" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Добавить принтер к Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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» из категории «Свое». Затем в открывшемся диалоговом окне настройте параметры в соответствии с характеристиками вашего принтера." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Производитель" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Имя принтера" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Добавить принтер" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4932,27 +4802,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Сохранить проект" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Рабочий стол" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Экструдер %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 и материал" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Материал" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Больше не показывать сводку по проекту" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Сохранить" @@ -4982,30 +4857,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Импортировать модели" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Показывать только текущий рабочий стол" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Пусто" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Выровнять для всех рабочих столов" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Добавить принтер" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Выровнять текущий рабочий стол" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Добавить сетевой принтер" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Добавить принтер, не подключенный к сети" + +#: /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/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Введите IP-адрес своего принтера." + +#: /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 "Помогите нам улучшить 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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Имя принтера" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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 "Приступить" + +#: MachineSettingsAction/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)." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Предоставляет возможность изменения параметров принтера (такие как рабочий объём, диаметр сопла и так далее)" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "Параметры принтера действие" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Поиск, управление и установка новых пакетов Cura." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Панель инструментов" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Предоставляет рентгеновский вид." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Просмотр в рентгене" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Предоставляет поддержку для чтения X3D файлов." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Чтение X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "Записывает G-код в файл." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "Средство записи G-кода" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Проверка моделей и конфигурации печати для выявления возможных проблем печати; рекомендации." + +#: ModelChecker/plugin.json +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 "Режим бога" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Обеспечение действий принтера для обновления прошивки." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Средство обновления прошивки" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Создание нормализованного профиля с изменениями качества." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Нормализатор профиля" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "Обеспечивает поддержку чтения файлов AMF." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "Средство чтения AMF" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Принимает G-Code и отправляет его на принтер. Плагин также может обновлять прошивку." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Печать через USB" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "Записывает G-код в сжатый архив." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Средство записи сжатого G-кода" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Предоставляет поддержку для записи пакетов формата Ultimaker." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "Средство записи UFP" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Обеспечивает подготовительный этап в Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Подготовительный этап" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Предоставляет поддержку для подключения и записи на внешний носитель." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "Плагин для работы с внешним носителем" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers." +msgstr "Управляет сетевыми соединениями с принтерами Ultimaker 3." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Соединение с сетью UM3" + +#: SettingsGuide/plugin.json +msgctxt "description" +msgid "Provides extra information and explanations about settings in Cura, with images and animations." +msgstr "Предоставляет дополнительную информацию и пояснения относительно параметров Cura с изображениями и анимацией." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Руководство по параметрам" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Обеспечивает этап мониторинга в Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Этап мониторинга" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Проверяет наличие обновлений ПО." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Проверка обновлений" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Открытие вида моделирования." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Вид моделирования" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Считывает G-код из сжатого архива." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Средство считывания сжатого G-кода" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Расширение, которое позволяет пользователю создавать скрипты для постобработки" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Пост обработка" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Создание объекта стирания для блокировки печати элемента поддержки в определенных местах" + +#: SupportEraser/plugin.json +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." +msgstr "Отправляет анонимную информацию о нарезке моделей. Может быть отключено через настройки." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Информация о нарезке модели" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Предоставляет возможности по чтению и записи профилей материалов в виде XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Профили материалов" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Предоставляет поддержку для импортирования профилей из устаревших версий Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Чтение устаревших профилей Cura" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Предоставляет поддержку для импортирования профилей из G-Code файлов." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "Средство считывания профиля из G-кода" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Обновляет настройки Cura 3.2 до Cura 3.3." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "Обновление версии 3.2 до 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Обновляет настройки Cura 3.3 до Cura 3.4." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "Обновление версии 3.3 до 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Обновляет настройки Cura 2.5 до Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Обновление версии 2.5 до 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Обновляет настройки Cura 2.7 до Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Обновляет настройки Cura 3.4 до Cura 3.5." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Обновление настроек Cura 3.0 до Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Обновляет настройки Cura 2.6 до Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Обновление версии 2.6 до 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Обновляет настройки Cura 2.1 до Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Обновление версии 2.1 до 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Обновляет настройки Cura 2.2 до Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Обновление версии 2.2 до 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Обеспечивает возможность генерировать печатаемую геометрию из файлов двухмерных изображений." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Чтение изображений" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Предоставляет интерфейс к движку CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Движок CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Предоставляет параметры для каждой модели." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Инструмент для настройки каждой модели" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Предоставляет поддержку для чтения 3MF файлов." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Чтение 3MF" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Предоставляет просмотр твёрдого тела." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Обзор" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Позволяет загружать и отображать файлы G-code." + +#: GCodeReader/plugin.json +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." +msgstr "Предоставляет поддержку для экспорта профилей Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Запись профиля Cura" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +msgstr "Позволяет производителям материалов создавать новые профили материалов и качества с помощью дружественного интерфейса." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Помощник по профилю печати" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Предоставляет возможность записи 3MF файлов." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Предоставляет дополнительные возможности для принтеров Ultimaker (такие как мастер выравнивания стола, выбора обновления и так далее)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Действия с принтерами Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Предоставляет поддержку для импорта профилей Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Чтение профиля Cura" + +#~ 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-код" @@ -5346,62 +6260,6 @@ msgstr "X3GWriter" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "Нажмите для проверки совместимости материала на Ultimaker.com." -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Предоставляет возможность изменения параметров принтера (такие как рабочий объём, диаметр сопла и так далее)" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Параметры принтера действие" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Поиск, управление и установка новых пакетов Cura." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Панель инструментов" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Предоставляет рентгеновский вид." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Просмотр в рентгене" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "Предоставляет поддержку для чтения X3D файлов." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "Чтение X3D" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "Записывает G-код в файл." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "Средство записи G-кода" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Проверка моделей и конфигурации печати для выявления возможных проблем печати; рекомендации." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ 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 "Shows changes since latest checked version." #~ msgstr "Показывает изменения со времени последней отмеченной версии." @@ -5410,14 +6268,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "Журнал изменений" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Обеспечение действий принтера для обновления прошивки." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Средство обновления прошивки" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Создаёт профиль со стандартными настройками." @@ -5426,14 +6276,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "Нормализация профиля" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "Принимает G-Code и отправляет его на принтер. Плагин также может обновлять прошивку." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "Печать через USB" - #~ msgctxt "description" #~ msgid "Ask the user once if he/she agrees with our license." #~ msgstr "Запрашивает согласие пользователя с условиями лицензии." @@ -5442,278 +6284,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "UserAgreement" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "Записывает G-код в сжатый архив." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Средство записи сжатого G-кода" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Предоставляет поддержку для записи пакетов формата Ultimaker." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "Средство записи UFP" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Обеспечивает подготовительный этап в Cura." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Подготовительный этап" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Предоставляет поддержку для подключения и записи на внешний носитель." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ 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 a monitor stage in Cura." -#~ msgstr "Обеспечивает этап мониторинга в Cura." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Этап мониторинга" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Проверяет наличие обновлений ПО." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Проверка обновлений" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Открытие вида моделирования." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Вид моделирования" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Считывает G-код из сжатого архива." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Средство считывания сжатого G-кода" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Расширение, которое позволяет пользователю создавать скрипты для постобработки" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Пост обработка" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Создание объекта стирания для блокировки печати элемента поддержки в определенных местах" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Средство стирания элемента поддержки" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Отправляет анонимную информацию о нарезке моделей. Может быть отключено через настройки." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Информация о нарезке модели" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "Предоставляет возможности по чтению и записи профилей материалов в виде XML." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Профили материалов" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Предоставляет поддержку для импортирования профилей из устаревших версий Cura." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Чтение устаревших профилей Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "Предоставляет поддержку для импортирования профилей из G-Code файлов." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "Средство считывания профиля из G-кода" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Обновляет настройки Cura 3.2 до Cura 3.3." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "Обновление версии 3.2 до 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Обновляет настройки Cura 3.3 до Cura 3.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "Обновление версии 3.3 до 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Обновляет настройки Cura 2.5 до Cura 2.6." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "Обновление версии 2.5 до 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Обновляет настройки Cura 2.7 до Cura 3.0." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "Обновление версии 2.7 до 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Обновляет настройки Cura 3.4 до Cura 3.5." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "Обновление версии 3.4 до 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Обновление настроек Cura 3.0 до Cura 3.1." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "Обновление версии 3.0 до 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Обновляет настройки Cura 2.6 до Cura 2.7." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "Обновление версии 2.6 до 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Обновляет настройки Cura 2.1 до Cura 2.2." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "Обновление версии 2.1 до 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Обновляет настройки Cura 2.2 до Cura 2.4." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "Обновление версии 2.2 до 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "Обеспечивает возможность генерировать печатаемую геометрию из файлов двухмерных изображений." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Чтение изображений" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Предоставляет интерфейс к движку CuraEngine." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Движок CuraEngine" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Предоставляет параметры для каждой модели." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Инструмент для настройки каждой модели" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "Предоставляет поддержку для чтения 3MF файлов." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "Чтение 3MF" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Предоставляет просмотр твёрдого тела." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Обзор" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Позволяет загружать и отображать файлы G-code." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "Чтение G-code" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Предоставляет поддержку для экспорта профилей Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Запись профиля Cura" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "Предоставляет возможность записи 3MF файлов." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "Запись 3MF" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Предоставляет дополнительные возможности для принтеров Ultimaker (такие как мастер выравнивания стола, выбора обновления и так далее)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Действия с принтерами Ultimaker" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Предоставляет поддержку для импорта профилей Cura." - -#~ msgctxt "name" -#~ msgid "Cura Profile Reader" -#~ msgstr "Чтение профиля Cura" - #~ msgctxt "@warning:status" #~ msgid "Please generate G-code before saving." #~ msgstr "Сгенерируйте G-код перед сохранением." @@ -5754,14 +6324,6 @@ msgstr "X3GWriter" #~ 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" diff --git a/resources/i18n/ru_RU/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po index ccdf4ddd7c..89d234c483 100644 --- a/resources/i18n/ru_RU/fdmextruder.def.json.po +++ b/resources/i18n/ru_RU/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Ruslan Popov , Russian \n" @@ -1277,7 +1277,6 @@ msgstr "Укажите диаметр используемой нити." #~ "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" #~ "Это минимальное расстояние, следующие линии юбки будут печататься наружу." @@ -1674,7 +1673,6 @@ msgstr "Укажите диаметр используемой нити." #~ "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 "" - #~ "Расстояние движения вверх, при котором выдавливание идёт на половине скорости.\n" #~ "Это может улучшить прилипание к предыдущим слоям, не перегревая материал тех слоёв. Применяется только при нитевой печати." diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index d05ec7c614..eabadf6069 100644 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Ruslan Popov , Russian \n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -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" @@ -234,7 +238,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,7 +248,7 @@ msgstr "Количество включенных экструдеров; это #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Внешний диаметр сопла" #: fdmprinter.def.json @@ -254,7 +258,7 @@ msgstr "Внешний диаметр кончика сопла." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Длина сопла" #: fdmprinter.def.json @@ -264,7 +268,7 @@ msgstr "Высота между кончиком сопла и нижней ча #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Угол сопла" #: fdmprinter.def.json @@ -274,7 +278,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 +308,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 @@ -314,7 +318,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 @@ -334,7 +338,7 @@ msgstr "Минимальное время, которое экструдер д #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "Вариант G-кода" #: fdmprinter.def.json @@ -399,8 +403,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" @@ -419,8 +423,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" @@ -429,8 +433,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" @@ -439,7 +443,7 @@ msgstr "2D контур головы принтера (включая крышк #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Высота портала" #: fdmprinter.def.json @@ -469,8 +473,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" @@ -1294,8 +1298,10 @@ 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 +1323,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 +1340,15 @@ 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" @@ -1632,7 +1645,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" @@ -1864,6 +1879,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 +1999,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 +2089,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" @@ -2047,7 +2272,7 @@ msgstr "Скорость с которой нить будет извлечен #: fdmprinter.def.json msgctxt "retraction_prime_speed label" msgid "Retraction Prime Speed" -msgstr "Скорость возврата в начале печати" +msgstr "Скорость заправки при откате" #: fdmprinter.def.json msgctxt "retraction_prime_speed description" @@ -2101,8 +2326,9 @@ 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" @@ -2154,6 +2380,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 +2581,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" @@ -2924,6 +3160,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 +3440,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,12 +3506,12 @@ 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" +msgctxt "support_infill_angles description" msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." msgstr "Ориентация шаблона заполнения для поддержек. Шаблон заполнения поддержек вращается в горизонтальной плоскости." @@ -3391,8 +3642,9 @@ 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" @@ -3770,14 +4022,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" @@ -3899,7 +4151,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" @@ -3989,7 +4243,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" @@ -4271,16 +4525,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" @@ -4321,16 +4565,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" @@ -4341,6 +4575,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" @@ -4623,8 +4867,9 @@ 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" @@ -4856,6 +5101,16 @@ 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." +msgstr "Максимальное допустимое отклонение при снижении разрешения для параметра максимального разрешения. Увеличение этого значения уменьшит точность печати и значение G-кода." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5113,8 +5368,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" @@ -5346,7 +5601,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 "Расстояние движения вверх, при котором выдавливание идёт на половине скорости.\nЭто может улучшить прилипание к предыдущим слоям, не перегревая материал тех слоёв. Применяется только при каркасной печати." +msgstr "" +"Расстояние движения вверх, при котором выдавливание идёт на половине скорости.\n" +"Это может улучшить прилипание к предыдущим слоям, не перегревая материал тех слоёв. Применяется только при каркасной печати." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5455,7 +5712,7 @@ msgstr "Зазор между соплом и горизонтально нис #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Использовать адаптивные слои" #: fdmprinter.def.json @@ -5465,7 +5722,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 @@ -5475,7 +5732,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 @@ -5485,7 +5742,7 @@ msgstr "Разница между высотой следующего слоя #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Threshold" msgstr "Порог для адаптивных слоев" #: fdmprinter.def.json @@ -5703,6 +5960,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5763,6 +6170,138 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Матрица преобразования, применяемая к модели при её загрузке из файла." +#~ 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 "Величина перекрытия между оболочкой и стенками в виде процентного отношения от ширины линии оболочки. Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Это значение является процентным отношением от средней ширины линии оболочки и внутренней стенки." @@ -5900,7 +6439,6 @@ msgstr "Матрица преобразования, применяемая к #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "Команды в G-коде, которые будут выполнены при старте печати, разделённые \n" #~ "." @@ -5913,7 +6451,6 @@ msgstr "Матрица преобразования, применяемая к #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "Команды в G-коде, которые будут выполнены в конце печати, разделённые \n" #~ "." @@ -5970,7 +6507,6 @@ msgstr "Матрица преобразования, применяемая к #~ "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" #~ "Это минимальное расстояние, следующие линии юбки будут печататься наружу." diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 1c402d58ee..34b59860cb 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Turkish\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "Makine Ayarları" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D Model Yardımcısı" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,17 +64,11 @@ msgid "" "

{model_names}

\n" "

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

\n" "

View print quality guide

" -msgstr "

Model boyutu ve model yapılandırması nedeniyle bir veya daha fazla 3D model optimum yazdırılamayabilir:

\n

{model_names}

\n

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 "Changelog" -msgstr "Değişiklik Günlüğü" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Değişiklik Günlüğünü Göster" +msgstr "" +"

Model boyutu ve model yapılandırması nedeniyle bir veya daha fazla 3D model optimum yazdırılamayabilir:

\n" +"

{model_names}

\n" +"

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/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" @@ -91,37 +85,36 @@ 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:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF Dosyası" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB yazdırma" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB ile bağlı" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -132,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "X3g Dosyası" +#: /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/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -144,6 +142,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" @@ -202,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "Hata" @@ -234,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "Uyarı" @@ -263,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Çıkarılabilir Sürücü" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Ağ üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "Ağ üzerinden bağlandı." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 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:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "Kimlik doğrulama durumu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "Kimlik Doğrulama Durumu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "Yeniden dene" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 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:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 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:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "Erişim Talep Et" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 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:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 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:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Uyumsuz yapılandırma" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 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:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Veriler yazıcıya gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "Veri gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 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:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "Ağ üzerinden bağlandı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 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:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "Veri Gönderildi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "Monitörde Görüntüle" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "Baskı tamamlandı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "Boş" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "Bilinmiyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "Bulut üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "Bulut üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "Bulut üzerinden bağlı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "Bulut hatası" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "Yazdırma görevi dışa aktarılamadı." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "Veri yazıcıya yüklenemedi." @@ -537,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "bugün" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "Buluta bağlanırken hata oluştu." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Yazdırma İşi Gönderiliyor" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "Veri uzak kümeye gönderiliyor" +msgid "Uploading via Ultimaker Cloud" +msgstr "Ultimaker Cloud İle Yükleniyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +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" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "Bu yazıcı için bir daha sorma." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "Başlayın" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "Bağlı!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "Bağlantınızı inceleyin" @@ -593,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "Görüntüle" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "Güncelleme bilgilerine erişilemedi." @@ -650,46 +654,11 @@ 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" msgstr "Cura 15.04 profilleri" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "Değerlendirme" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -715,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF Resmi" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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" @@ -795,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "Nozül" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "Proje Dosyası Aç" @@ -822,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code Ayrıntıları" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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." @@ -856,7 +825,7 @@ 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:121 +#: /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." @@ -917,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Önizleme" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Dış Duvar" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "İç Duvarlar" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Yüzey Alanı" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Dolgu" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Destek Dolgusu" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Destek Arayüzü" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "Destek" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Etek" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Hareket" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Geri Çekmeler" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "Diğer" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Önceden dilimlenmiş dosya {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Desteklenmiyor" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Geçersiz dosya URL’si:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Geçersiz kılınmadı" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "Ayarlar güncellendi" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Ekstrüder(ler) Devre Dışı Bırakıldı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 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:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format 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:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, 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:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "Özel profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 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:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Önceden dilimlenmiş dosya {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "Sonraki" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Ekle" + +#: /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:109 #, python-brace-format @@ -1166,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tüm Dosyalar (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "Bilinmiyor" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "Özel Malzeme" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "Özel" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "Yapı Disk Bölümü" @@ -1197,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Ultimaker hesabı sunucusuna ulaşılamadı." +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +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:73 +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:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1219,7 +1239,7 @@ msgstr "Nesneler Yerleştiriliyor" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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ı" @@ -1230,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Konum Bulunamıyor" @@ -1260,7 +1280,12 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "

Ultimaker Cura doğru görünmeyen bir şeyle karşılaştı.

\n

Başlatma esnasında kurtarılamaz bir hata ile karşılaştık. Muhtemelen bazı hatalı yapılandırma dosyalarından kaynaklanıyordu. Yapılandırmanızı yedekleyip sıfırlamanızı öneriyoruz.

\n

Yedekler yapılandırma klasöründe bulunabilir.

\n

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

\n " +msgstr "" +"

Ultimaker Cura doğru görünmeyen bir şeyle karşılaştı.

\n" +"

Başlatma esnasında kurtarılamaz bir hata ile karşılaştık. Muhtemelen bazı hatalı yapılandırma dosyalarından kaynaklanıyordu. Yapılandırmanızı yedekleyip sıfırlamanızı öneriyoruz.

\n" +"

Yedekler yapılandırma klasöründe bulunabilir.

\n" +"

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

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" @@ -1293,7 +1318,10 @@ 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 "

Cura’da onarılamaz bir hata oluştu. Lütfen sorunu çözmek için bize Çökme Raporunu gönderin

\n

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

\n " +msgstr "" +"

Cura’da onarılamaz bir hata oluştu. Lütfen sorunu çözmek için bize Çökme Raporunu gönderin

\n" +"

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:173 msgctxt "@title:groupbox" @@ -1365,242 +1393,195 @@ msgstr "Günlükler" #: /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:341 +#: /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:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Makineler yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Görünüm ayarlanıyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Arayüz yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 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:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Makine Ayarları" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Yazıcı" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Yazıcı Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (Genişlik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Derinlik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Yükseklik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "Yapı levhası şekli" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "Merkez nokta" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "Isıtılmış yatak" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "G-code türü" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Yazıcı Başlığı Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 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:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "Ekstrüder Sayısı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-code’u Başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -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:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "G-code’u Sonlandır" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /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:402 +#: /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:404 -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:428 +#: /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:440 +#: /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:452 +#: /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:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -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" @@ -1610,7 +1591,7 @@ msgid "Install" msgstr "Yükle" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Yüklü" @@ -1626,15 +1607,15 @@ msgid "ratings" msgstr "derecelendirmeler" #: /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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Eklentiler" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Malzemeler" @@ -1644,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "Derecelendirmeniz" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "Bilinmiyor" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1765,7 +1743,7 @@ 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ü" @@ -1801,7 +1779,10 @@ 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 "Bu eklenti bir lisans içerir.\nBu eklentiyi yüklemek için bu lisansı kabul etmeniz gerekir.\nAşağıdaki koşulları kabul ediyor musunuz?" +msgstr "" +"Bu eklenti bir lisans içerir.\n" +"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:55 msgctxt "@action:button" @@ -1848,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "Paketler alınıyor..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-posta" @@ -1863,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "Kapat" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1954,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /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/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 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." +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/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "Yükleniyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "Mevcut değil" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "Ulaşılamıyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "Boşta" @@ -1995,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "Başlıksız" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "Anonim" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 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:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "Detaylar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "Kullanım dışı yazıcı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "İlk kullanılabilen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "Cam" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2033,178 +1994,190 @@ msgstr "Kuyrukta" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "Cura Connect’e git" +msgid "Manage in browser" +msgstr "Tarayıcıda yönet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "Yazdırma görevleri" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "Toplam yazdırma süresi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "Bekleniyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Yazdırma geçmişini görüntüle" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "Mevcut Bağlantı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 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:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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\nAş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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Ekle" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +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:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "Düzenle" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "Kaldır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "Yenile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 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:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "Bağlan" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Geçersiz IP adresi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "Yazıcı Adresi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +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." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "İptal ediliyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" msgid "Pausing..." msgstr "Duraklatılıyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "%1 bitiş tarihi: %2" @@ -2308,44 +2281,44 @@ msgctxt "@action:button" msgid "Override" msgstr "Geçersiz kıl" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alüminyum" @@ -2355,107 +2328,109 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Yazıcıya Bağlan" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Cura Ayarlar Kılavuzu" + +#: /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." -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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 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." +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:126 -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." - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Malzeme Rengi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Çizgi Tipi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Besleme hızı" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /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/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Uyumluluk Modu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "Geçişler" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "Yardımcılar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "Kabuk" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "Dolgu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /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/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Üst / Alt" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "İç Duvar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "maks" @@ -2485,30 +2460,25 @@ 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 this data" -msgstr "Bu veriyi 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 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" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "Yazdırma seçilmedi" +msgid "Allow sending anonymous data" +msgstr "Anonim veri gönderilmesine izin ver" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2557,19 +2527,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." @@ -2683,7 +2653,7 @@ msgid "Printer Group" msgstr "Yazıcı Grubu" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "Profil ayarları" @@ -2696,19 +2666,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "İsim" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 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/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2789,6 +2759,7 @@ 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" @@ -2879,22 +2850,23 @@ msgid "Previous" msgstr "Önceki" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "Dışa Aktar" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "Sonraki" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "İpucu" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "Genel" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2905,150 +2877,51 @@ msgctxt "@label" msgid "Checklist" msgstr "Kontrol listesi" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Yazıcı Yükseltmelerini seçin" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 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/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Bloku" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3099,170 +2972,170 @@ 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/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 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/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 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ı" @@ -3277,412 +3150,437 @@ 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:48 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:61 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:68 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:75 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:83 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:354 +#: /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:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "Arayüz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "Dil:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "Para Birimi:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 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:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "Otomatik olarak dilimle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "Görünüm şekli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "Dışarıda kalan alanı göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 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:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 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:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 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:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 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:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 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:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 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:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 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:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 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:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 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:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +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:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "Kamera oluşturma: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "Perspektif" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "Ortografik" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "Dosyaların açılması ve kaydedilmesi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "Büyük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Çok küçük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Yüklendiğinde modelleri seç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 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:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 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:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 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:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 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:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Her zaman sor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Her zaman proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "Her zaman modelleri içe aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "Profiller" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 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:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 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:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "Gizlilik" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 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:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonim) yazdırma bilgisi gönder" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "Daha fazla bilgi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "Deneysel" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 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:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /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:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "Yeniden adlandır" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 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:105 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:181 msgctxt "@title:window" msgid "Create Profile" msgstr "Profil Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 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:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profili Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profili Yeniden Adlandır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "Profili İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "Profili Dışa Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Yazıcı: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "Varsayılan profiller" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "Özel profiller" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 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:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "Geçerli değişiklikleri iptal et" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 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:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "Küresel Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "Mağaza" @@ -3725,12 +3623,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Yardım" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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." @@ -3745,33 +3643,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "arama ayarları" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 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:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 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:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Bu ayarı gizle" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Bu ayarı gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 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:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /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..." @@ -3782,50 +3680,64 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Gizlenen bazı ayarlar normal hesaplanan değerden farklı değerler kullanır.\n\nBu ayarları görmek için tıklayın." +msgstr "" +"Gizlenen bazı ayarlar normal hesaplanan değerden farklı değerler kullanır.\n" +"\n" +"Bu ayarları görmek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 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 "Bu ayarın değeri profilden farklıdır.\n\nProfil değerini yenilemek için tıklayın." +msgstr "" +"Bu ayarın değeri profilden farklıdır.\n" +"\n" +"Profil değerini yenilemek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 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 "Bu ayar normal olarak yapılır ama şu anda mutlak değer ayarı var.\n\nHesaplanan değeri yenilemek için tıklayın." +msgstr "" +"Bu ayar normal olarak yapılır ama şu anda mutlak değer ayarı var.\n" +"\n" +"Hesaplanan değeri yenilemek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /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:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Özel" @@ -3840,27 +3752,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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." @@ -3877,8 +3784,8 @@ msgstr "Bazı profil ayarlarını değiştirdiniz. Bunları değişiklikleri kay #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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" +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." #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3906,12 +3813,15 @@ 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\nProfil yöneticisini açmak için tıklayın." +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/PrintSetupSelector.qml:19 +#: /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." +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" @@ -3943,7 +3853,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "G-code Gönder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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." @@ -4040,11 +3950,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoriler" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "Genel" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4060,32 +3965,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "&Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Etkin Ekstruder olarak ayarla" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Ekstruderi Etkinleştir" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Ekstruderi Devre Dışı Bırak" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "&Yapı levhası" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "&Profil" @@ -4095,7 +4000,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Kamera konumu" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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ı" @@ -4159,12 +4079,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "Yapılandırma seç" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "Malzeme uyumluluğu çizelgesini göster" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "Yapılandırmalar" @@ -4189,17 +4104,17 @@ msgctxt "@label" msgid "Printer" msgstr "Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 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." @@ -4219,42 +4134,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "En Son Öğeyi Aç" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /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:153 +#: /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:161 +#: /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:169 +#: /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/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" -msgstr "Türleri görüntüle" +msgid "View type" +msgstr "Görüntüleme tipi" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "Merhaba " +msgid "Object list" +msgstr "Nesne listesi" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "Çıkış yap" @@ -4264,11 +4184,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "Giriş yap" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4279,8 +4194,11 @@ 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" +"- 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" @@ -4292,50 +4210,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "Süre tahmini yok" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /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:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "Dilimlenemedi" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "Zaman özellikleri" +msgid "Time estimation" +msgstr "Süre tahmini" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "Malzeme özellikleri" +msgid "Material estimation" +msgstr "Malzeme tahmini" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4357,285 +4280,299 @@ msgctxt "@label" msgid "Preset printers" msgstr "Önayarlı yazıcılar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /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:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /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:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /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:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "&Mağazayı Göster" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura Kapatılıyor" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "Paketi Kur" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "Yazıcı Ekle" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4653,7 +4590,9 @@ 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.\nBu ayarları kaydetmek veya iptal etmek ister misiniz?" +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" @@ -4695,34 +4634,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "Yeni Profil Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "Cura’ya bir yazıcı ekleyin" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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\nYazı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." - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "Üretici" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "Yazıcı Adı" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Yazıcı Ekle" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4743,7 +4654,9 @@ 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.\nCura aşağıdaki açık kaynak projelerini gururla kullanmaktadır:" +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:134 msgctxt "@label" @@ -4880,27 +4793,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Projeyi Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "Baskı tepsisi" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "Ekstruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "Malzeme" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 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:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "Kaydet" @@ -4930,30 +4848,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "Modelleri içe aktar" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -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/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "Boş" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Tüm yapı levhalarına yerleştir" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "Bir yazıcı ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Sadece mevcut yapı levhasına yerleştir" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "Bir ağ yazıcısı ekleyin" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "Ağ dışı bir yazıcı ekleyin" + +#: /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/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/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Ekle" + +#: /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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "Yazıcı adı" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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" + +#: MachineSettingsAction/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." +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "Makine ayarlarının değiştirilmesini sağlar (yapı hacmi, nozül boyutu vb.)" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgid "Machine Settings action" +msgstr "Makine Ayarları eylemi" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "Yeni Cura paketleri bulun, yönetin ve kurun." + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "Araç kutusu" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Röntgen Görüntüsü sağlar." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Röntgen Görüntüsü" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "X3D dosyalarının okunması için destek sağlar." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D Okuyucu" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "G-code’u bir dosyaya yazar." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "G-code Yazıcı" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "Olası yazdırma sorunlarına karşı modelleri ve yazdırma yapılandırmasını kontrol eder ve öneriler verir." + +#: ModelChecker/plugin.json +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" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "Aygıt yazılımını güncellemeye yönelik makine eylemleri sağlar." + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "Aygıt Yazılımı Güncelleyici" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "Düzleştirilmiş kalitede değiştirilmiş bir profil oluşturun." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "Profil Düzleştirici" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "AMF dosyalarının okunması için destek sağlar." + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "AMF Okuyucu" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "G-Code’ları kabul eder ve bir yazıcıya gönderir. Eklenti aynı zamanda üretici sürümünü güncelleyebilir." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB yazdırma" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "G-code’u bir sıkıştırılmış arşive yazar." + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "Sıkıştırılmış G-code Yazıcısı" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "Ultimaker Biçim Paketleri yazmak için destek sağlar." + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "UPF Yazıcı" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Cura’da hazırlık aşaması sunar." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Hazırlık Aşaması" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Çıkarılabilir sürücünün takılıp çıkarılmasını ve yazma desteği sağlar." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +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." + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3 Ağ Bağlantısı" + +#: SettingsGuide/plugin.json +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." + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "Ayarlar Kılavuzu" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Cura’da görüntüleme aşaması sunar." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Görüntüleme Aşaması" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Bellenim güncellemelerini denetler." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Bellenim Güncelleme Denetleyicisi" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Simülasyon görünümünü sunar." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Simülasyon Görünümü" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "Bir sıkıştırılmış arşivden g-code okur." + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "Sıkıştırılmış G-code Okuyucusu" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Kullanıcının oluşturduğu komut dosyalarına son işleme için izin veren uzantı" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Son İşleme" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "Belirli yerlerde desteğin yazdırılmasını engellemek için bir silici yüzey oluşturur" + +#: SupportEraser/plugin.json +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." +msgstr "Anonim dilim bilgisi gönderir. Tercihlerden devre dışı bırakılabilir." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Dilim bilgisi" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "XML tabanlı malzeme profillerini okuma ve yazma olanağı sağlar." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Malzeme Profilleri" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Eski Cura sürümlerinden profilleri içe aktarmak için destek sağlar." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Eski Cura Profil Okuyucu" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "G-code dosyalarından profilleri içe aktarmak için destek sağlar." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "G-code Profil Okuyucu" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "Yapılandırmaları Cura 3.2’ten Cura 3.3’ya yükseltir." + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "3.2'dan 3.3'e Sürüm Yükseltme" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "Yapılandırmaları Cura 3.3’ten Cura 3.4’ya yükseltir." + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "3.3'dan 3.4'e Sürüm Yükseltme" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Yapılandırmaları Cura 2.5’ten Cura 2.6’ya yükseltir." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "2.5’ten 2.6’ya Sürüm Yükseltme" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Yapılandırmaları Cura 2.7’den Cura 3.0’a yükseltir." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "Yapılandırmaları Cura 3.4’ten Cura 3.5’e yükseltir." + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "Yapılandırmaları Cura 3.0'dan Cura 3.1'e yükseltir." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "Yapılandırmaları Cura 2.6’dan Cura 2.7’ye yükseltir." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "2.6’dan 2.7’ye Sürüm Yükseltme" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Yapılandırmaları Cura 2.1’den Cura 2.2’ye yükseltir." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "2.1’den 2.2’ye Sürüm Yükseltme" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Yapılandırmaları Cura 2.2’den Cura 2.4’e yükseltir." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "2.2’den 2.4’e Sürüm Yükseltme" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "2D resim dosyasından yazdırılabilir geometri oluşturulmasını sağlar." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Resim Okuyucu" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "CuraEngine arka dilimleme ucuna bağlantı sağlar." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine Arka Uç" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Model Başına Ayarları sağlar." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Model Başına Ayarlar Aracı" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "3MF dosyalarının okunması için destek sağlar." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF Okuyucu" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Normal gerçek bir ağ görünümü sağlar." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Gerçek Görünüm" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "G-code dosyalarının yüklenmesine ve görüntülenmesine olanak tanır." + +#: GCodeReader/plugin.json +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." +msgstr "Cura profillerinin dışa aktarılması için destek sağlar." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura Profili Yazıcı" + +#: CuraPrintProfileCreator/plugin.json +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." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Baskı Profili Asistanı" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "3MF dosyalarının yazılması için destek sağlar." + +#: 3MFWriter/plugin.json +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.)." +msgstr "Ultimaker makineleri için makine eylemleri sunar (yatak dengeleme sihirbazı, yükseltme seçme vb.)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker makine eylemleri" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Cura profillerinin içe aktarılması için destek sağlar." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura Profil Okuyucu" + +#~ 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" @@ -5151,7 +6108,6 @@ msgstr "X3GWriter" #~ "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" @@ -5295,62 +6251,6 @@ msgstr "X3GWriter" #~ 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 "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "Makine ayarlarının değiştirilmesini sağlar (yapı hacmi, nozül boyutu vb.)" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "Makine Ayarları eylemi" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "Yeni Cura paketleri bulun, yönetin ve kurun." - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "Araç kutusu" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "Röntgen Görüntüsü sağlar." - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "Röntgen Görüntüsü" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "X3D dosyalarının okunması için destek sağlar." - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3D Okuyucu" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "G-code’u bir dosyaya yazar." - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "G-code Yazıcı" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "Olası yazdırma sorunlarına karşı modelleri ve yazdırma yapılandırmasını kontrol eder ve öneriler verir." - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ msgstr "Model Kontrol Edici" - -#~ 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 "Shows changes since latest checked version." #~ msgstr "Son kontrol edilen versiyondan bu yana yapılan değişiklikleri gösterir." @@ -5359,14 +6259,6 @@ msgstr "X3GWriter" #~ msgid "Changelog" #~ msgstr "Değişiklik Günlüğü" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "Aygıt yazılımını güncellemeye yönelik makine eylemleri sağlar." - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "Aygıt Yazılımı Güncelleyici" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "Düzleştirilmiş kalitede değişiklik profili oluşturur." @@ -5375,14 +6267,6 @@ msgstr "X3GWriter" #~ msgid "Profile flatener" #~ msgstr "Profil düzleştirici" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "G-Code’ları kabul eder ve bir yazıcıya gönderir. Eklenti aynı zamanda üretici sürümünü güncelleyebilir." - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USB yazdırma" - #~ 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." @@ -5391,278 +6275,6 @@ msgstr "X3GWriter" #~ msgid "UserAgreement" #~ msgstr "UserAgreement" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "G-code’u bir sıkıştırılmış arşive yazar." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "Sıkıştırılmış G-code Yazıcısı" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "Ultimaker Biçim Paketleri yazmak için destek sağlar." - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "UPF Yazıcı" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "Cura’da hazırlık aşaması sunar." - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "Hazırlık Aşaması" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "Çıkarılabilir sürücünün takılıp çıkarılmasını ve yazma desteği sağlar." - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ msgstr "Çıkarılabilir Sürücü Çıkış Cihazı Eklentisi" - -#~ 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 a monitor stage in Cura." -#~ msgstr "Cura’da görüntüleme aşaması sunar." - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "Görüntüleme Aşaması" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "Bellenim güncellemelerini denetler." - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "Bellenim Güncelleme Denetleyicisi" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "Simülasyon görünümünü sunar." - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "Simülasyon Görünümü" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "Bir sıkıştırılmış arşivden g-code okur." - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "Sıkıştırılmış G-code Okuyucusu" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "Kullanıcının oluşturduğu komut dosyalarına son işleme için izin veren uzantı" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "Son İşleme" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "Belirli yerlerde desteğin yazdırılmasını engellemek için bir silici yüzey oluşturur" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "Destek Silici" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "Anonim dilim bilgisi gönderir. Tercihlerden devre dışı bırakılabilir." - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "Dilim bilgisi" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "XML tabanlı malzeme profillerini okuma ve yazma olanağı sağlar." - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "Malzeme Profilleri" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "Eski Cura sürümlerinden profilleri içe aktarmak için destek sağlar." - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "Eski Cura Profil Okuyucu" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "G-code dosyalarından profilleri içe aktarmak için destek sağlar." - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "G-code Profil Okuyucu" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "Yapılandırmaları Cura 3.2’ten Cura 3.3’ya yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "3.2'dan 3.3'e Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "Yapılandırmaları Cura 3.3’ten Cura 3.4’ya yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "3.3'dan 3.4'e Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "Yapılandırmaları Cura 2.5’ten Cura 2.6’ya yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "2.5’ten 2.6’ya Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "Yapılandırmaları Cura 2.7’den Cura 3.0’a yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "2.7’den 3.0’a Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "Yapılandırmaları Cura 3.4’ten Cura 3.5’e yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "3.4’ten 3.5’e Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "Yapılandırmaları Cura 3.0'dan Cura 3.1'e yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "3.0'dan 3.1'e Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "Yapılandırmaları Cura 2.6’dan Cura 2.7’ye yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "2.6’dan 2.7’ye Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "Yapılandırmaları Cura 2.1’den Cura 2.2’ye yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "2.1’den 2.2’ye Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "Yapılandırmaları Cura 2.2’den Cura 2.4’e yükseltir." - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "2.2’den 2.4’e Sürüm Yükseltme" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "2D resim dosyasından yazdırılabilir geometri oluşturulmasını sağlar." - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "Resim Okuyucu" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "CuraEngine arka dilimleme ucuna bağlantı sağlar." - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "CuraEngine Arka Uç" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "Model Başına Ayarları sağlar." - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "Model Başına Ayarlar Aracı" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "3MF dosyalarının okunması için destek sağlar." - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MF Okuyucu" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "Normal gerçek bir ağ görünümü sağlar." - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "Gerçek Görünüm" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "G-code dosyalarının yüklenmesine ve görüntülenmesine olanak tanır." - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "G-code Okuyucu" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "Cura profillerinin dışa aktarılması için destek sağlar." - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura Profili Yazıcı" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "3MF dosyalarının yazılması için destek sağlar." - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF Yazıcı" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "Ultimaker makineleri için makine eylemleri sunar (yatak dengeleme sihirbazı, yükseltme seçme vb.)" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ultimaker makine eylemleri" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "Cura profillerinin içe aktarılması için destek sağlar." - -#~ 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." @@ -5703,14 +6315,6 @@ msgstr "X3GWriter" #~ 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" @@ -5756,7 +6360,6 @@ msgstr "X3GWriter" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "\"{}\" quality!\n" #~ "Fell back to \"{}\" kullanarak dışarı aktarım yapılamadı." @@ -5932,7 +6535,6 @@ msgstr "X3GWriter" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "Bazı modeller, nesne boyutu ve modeller için seçilen materyal nedeniyle optimal biçimde yazdırılamayabilir: {model_names}.\n" #~ "Yazdırma kalitesini iyileştirmek için faydalı olabilecek ipuçları:\n" #~ "1) Yuvarlak köşeler kullanın.\n" @@ -5949,7 +6551,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "Çiziminizde model bulunamadı. İçeriğini tekrar kontrol edip bir parçanın veya düzeneğin içinde olduğunu teyit edebilir misiniz?\n" #~ "\n" #~ "Teşekkürler!" @@ -5960,7 +6561,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Çiziminizin içinde birden fazla parça veya düzenek bulundu. Şu anda sadece içerisinde bir parça veya düzenek olan çizimleri desteklemekteyiz.\n" #~ "\n" #~ "Üzgünüz!" @@ -5985,7 +6585,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Sayın müşterimiz,\n" #~ "Sisteminizde SolidWorks’ün geçerli bir yüklemesini bulamadık. Ya sisteminizde SolidWorks yüklü değil ya da geçerli bir lisansa sahip değilsiniz. SolidWorks’ü tek başına sorunsuz bir biçimde çalıştırabildiğinizden emin olun ve/veya ICT’niz ile irtibata geçin.\n" #~ "\n" @@ -6000,7 +6599,6 @@ msgstr "X3GWriter" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Sayın müşterimiz,\n" #~ "Şu anda bu eklentiyi Windows dışında farklı bir işletim sisteminde kullanmaktasınız. Bu eklenti sadece Windows işletim sisteminde, geçerli bir lisansa sahip, kurulu SolidWorks programıyla çalışır. Lütfen bu eklentiyi SolidWorks’ün kurulu olduğu Windows işletim sistemli bir bilgisayara yükleyin.\n" #~ "\n" @@ -6105,7 +6703,6 @@ msgstr "X3GWriter" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Makro ve simge ile\n" #~ "dizini açın" @@ -6404,7 +7001,6 @@ msgstr "X3GWriter" #~ "\n" #~ " Thanks!." #~ msgstr "" - #~ "Çiziminizde model bulunamadı. İçeriğini tekrar kontrol edip bir parçanın veya düzeneğin içinde olduğunu teyit edebilir misiniz?\n" #~ "\n" #~ " Teşekkürler!." @@ -6415,7 +7011,6 @@ msgstr "X3GWriter" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Çiziminizin içinde birden fazla parça veya düzenek bulundu. Şu anda sadece içerisinde bir parça veya düzenek olan çizimleri desteklemekteyiz.\n" #~ "\n" #~ "Üzgünüz!" @@ -6450,7 +7045,6 @@ msgstr "X3GWriter" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Onarılamaz bir hata oluştu. Lütfen sorunu çözmek için bize Çökme Raporunu gönderin

\n" #~ "

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

\n" #~ " " @@ -6617,7 +7211,6 @@ msgstr "X3GWriter" #~ "

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

\n" #~ " " #~ msgstr "" - #~ "

Çok ciddi bir istisna oluştu. Lütfen sorunu çözmek için bize Çökme Raporu'nu gönderin

\n" #~ "

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

\n" #~ " " @@ -6764,7 +7357,6 @@ msgstr "X3GWriter" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Kurtulunamayan ciddi bir olağanüstü durum oluştu!

\n" #~ "

Yazılım hatası raporunu http://github.com/Ultimaker/Cura/issues adresine gönderirken aşağıdaki bilgileri kullanınız

\n" #~ " " @@ -6807,7 +7399,6 @@ msgstr "X3GWriter" #~ "You need to accept this license to install this plugin.\n" #~ "Do you agree with the terms below?" #~ msgstr "" - #~ " eklenti lisans içerir.\n" #~ "Bu eklentiyi kurmak için bu lisans kabul etmeniz gerekir.\n" #~ "Aşağıdaki koşulları kabul ediyor musunuz?" @@ -7335,7 +7926,6 @@ msgstr "X3GWriter" #~ msgid "Print Selected Model with %1" #~ 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" #~ msgctxt "@info:status" @@ -7365,7 +7955,6 @@ msgstr "X3GWriter" #~ "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" #~ " " #~ msgstr "" - #~ "

Düzeltemediğimiz önemli bir özel durum oluştu!

\n" #~ "

Umarız bu yavru kedi resmi şoku atlatmanıza yardımcı olur.

\n" #~ "

Bir hata raporu göndermek için aşağıdaki bilgileri kullanın: http://github.com/Ultimaker/Cura/issues

\n" diff --git a/resources/i18n/tr_TR/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po index e190b1488a..350e20bb6f 100644 --- a/resources/i18n/tr_TR/fdmextruder.def.json.po +++ b/resources/i18n/tr_TR/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index 529d252d1a..72abb07035 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-14 14:47+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Turkish\n" +"POT-Creation-Date: 2019-07-16 14:38+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" @@ -237,8 +237,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 +247,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 +257,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 +267,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 +277,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 +307,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 +317,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 +337,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 +402,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 +422,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 +432,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 +442,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 +472,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 @@ -1297,8 +1297,12 @@ 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 +1324,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 +1341,15 @@ 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" @@ -1869,6 +1880,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 +2000,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 +2090,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 +2327,9 @@ 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" @@ -2159,6 +2381,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 +2582,15 @@ 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" @@ -2929,6 +3162,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 +3442,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,12 +3508,12 @@ 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" +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." @@ -3396,8 +3644,9 @@ 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" @@ -3775,14 +4024,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" @@ -4278,16 +4527,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" @@ -4328,16 +4567,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" @@ -4348,6 +4577,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" @@ -4630,8 +4869,9 @@ 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" @@ -4863,6 +5103,16 @@ 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." +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." + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5120,8 +5370,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" @@ -5464,7 +5714,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 @@ -5474,8 +5724,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" @@ -5484,8 +5734,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" @@ -5494,8 +5744,8 @@ 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 Threshold" +msgstr "Uyarlanabilir Katman Eşiği" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5712,6 +5962,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5772,6 +6172,138 @@ 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 "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." diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 682d27c3f2..3d651185c8 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:49+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: PCDotFan , Bothof \n" +"POT-Creation-Date: 2019-07-16 14:38+0200\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" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "打印机设置" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "三维模型的助理" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,16 +70,6 @@ msgstr "" "

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

\n" "

查看打印质量指南

" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Changelog" -msgstr "更新日志" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "显示更新日志" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -95,37 +85,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "配置文件已被合并并激活。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 文件" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "通过 USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "通过 USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "通过 USB 连接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -136,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "X3g 文件" +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 +msgctxt "X3G Writer File Description" +msgid "X3G File" +msgstr "X3G 文件" + #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +142,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 格式包" @@ -206,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "错误" @@ -238,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -267,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "可移动磁盘" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "已通过网络连接。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "已通过网络连接,但没有打印机的控制权限。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "身份验证状态" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "身份验证状态" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "重试" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "重新发送访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "打印机接受了访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "请求访问" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "向打印机发送访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "无法启动新的打印作业。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "配置不匹配" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "您确定要使用所选配置进行打印吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "向打印机发送数据" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "正在发送数据" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "与您的打印机同步" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "已通过网络连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 msgctxt "@info:status" msgid "Print job was successfully sent to the printer." msgstr "打印作业已成功发送到打印机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "数据已发送" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "在监控器中查看" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "打印完成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "空" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "通过云打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "通过云打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "通过云连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "云错误" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "无法导出打印作业。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "无法将数据上传到打印机。" @@ -541,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "今天" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "连接到云时出错。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "发送打印作业" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "发送数据至远程群集" +msgid "Uploading via Ultimaker Cloud" +msgstr "通过 Ultimaker Cloud 上传" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 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/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "连接到 Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "对此打印机不再询问。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "开始" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 msgctxt "@info:status" msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." msgstr "您现在可以使用您的 Ultimaker account 帐户从任何地方发送和监控打印作业。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "已连接!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "查看您的连接" @@ -597,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "监控" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "无法获取更新信息。" @@ -654,46 +654,11 @@ 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" msgstr "Cura 15.04 配置文件" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "评估" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -719,56 +684,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 图像" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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 "信息" @@ -799,19 +764,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "喷嘴" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "打开项目文件" @@ -826,18 +791,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 详细信息" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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 文件可能不准确。" @@ -860,7 +825,7 @@ msgctxt "@info:backup_status" msgid "There was an error listing your backups." msgstr "列出您的备份时出错。" -#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:121 +#: /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 "尝试恢复您的备份时出错。" @@ -921,243 +886,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "预览" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "外壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "内壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "表层" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "支撑填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "支撑接触面" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "支撑" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "移动" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "回抽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "其它" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "预切片文件 {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "不支持" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "文件 URL 无效:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "未覆盖" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "设置已更新" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "挤出机已禁用" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 msgctxt "@info:title" msgid "Export succeeded" msgstr "导出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "无法从 {0} 导入配置文件:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功导入配置文件 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "配置文件缺少打印质量类型定义。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "预切片文件 {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +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:109 #, python-brace-format @@ -1170,23 +1153,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "所有文件 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "自定义材料" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "自定义" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "成形空间体积" @@ -1201,16 +1202,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "无法连接 Ultimaker 帐户服务器。" +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "在授权此应用程序时,须提供所需权限。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "尝试登录时出现意外情况,请重试。" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1223,7 +1239,7 @@ msgstr "放置模型" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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 "无法在成形空间体积内放下全部模型" @@ -1234,19 +1250,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "找不到位置" @@ -1377,242 +1393,195 @@ msgstr "日志" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "发送报告" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在载入打印机..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在设置场景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在载入界面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "所选模型过小,无法加载。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "打印机设置" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "打印机" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "打印机设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (宽度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (深度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (高度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "打印平台形状" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "置中" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "加热床" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "G-code 风格" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "打印头设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "十字轴高度" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "挤出机数目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "开始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "将在开始时执行的 G-code 命令。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "结束 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "喷嘴孔径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "兼容的材料直径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷却风扇数量" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "挤出机的结束 G-code" @@ -1622,7 +1591,7 @@ msgid "Install" msgstr "安装" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "已安装" @@ -1638,15 +1607,15 @@ msgid "ratings" 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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "插件" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "材料" @@ -1656,52 +1625,49 @@ msgctxt "@label" msgid "Your rating" msgstr "您的评分" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "未知" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1777,7 +1743,7 @@ 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 "安装" @@ -1863,12 +1829,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "获取包……" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "电子邮件" @@ -1878,22 +1844,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "关闭" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1969,38 +1919,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "玻璃" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 msgctxt "@info" -msgid "These options are not available because you are monitoring a cloud printer." -msgstr "这些选项不可用,因为您正在监控云打印机。" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "请及时更新打印机固件以远程管理打印队列。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "正在加载..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "不可用" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "无法连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "空闲" @@ -2010,37 +1962,31 @@ msgctxt "@label" msgid "Untitled" msgstr "未命名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "匿名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "需要更改配置" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "详细信息" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "不可用的打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "第一个可用" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "玻璃" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2048,181 +1994,189 @@ msgstr "已排队" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "转到 Cura Connect" +msgid "Manage in browser" +msgstr "请于浏览器中进行管理" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "打印作业" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "总打印时间" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "等待" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "查看打印历史" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "现有连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "连接到网络打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "添加" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "请从以下列表中选择您的打印机:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "编辑" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "删除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "刷新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "该网络地址的打印机尚未响应。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "IP 地址无效" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "打印机网络地址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" 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:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "正在准备..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "正在中止..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /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:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "完成 %1 于 %2" @@ -2326,43 +2280,43 @@ msgctxt "@action:button" msgid "Override" msgstr "覆盖" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "铝" @@ -2372,110 +2326,108 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "连接到打印机" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Cura 设置向导" + +#: /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." -msgstr "" -"请确保您的打印机已连接:\n" -"- 检查打印机是否已启动。\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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "请选择已连接网络的打印机进行监控。" +msgid "Please connect your printer to the network." +msgstr "请将打印机连接到网络。" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "请将 Ultimaker 打印机连接到您的局域网。" - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "材料颜色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "走线类型" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "进给速度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "层厚度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "兼容模式" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "空驶" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "打印辅助结构" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "外壳" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "只显示顶层" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "顶 / 底层" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "内壁" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "最小" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "最大" @@ -2505,30 +2457,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "允许向 Ultimaker 发送此数据并帮助我们改善 Cura" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "未选择打印" +msgid "Allow sending anonymous data" +msgstr "允许发送匿名数据" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2577,19 +2524,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." @@ -2703,7 +2650,7 @@ msgid "Printer Group" msgstr "打印机组" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "配置文件设置" @@ -2716,19 +2663,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "名字" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 msgctxt "@action:label" msgid "Not in profile" msgstr "不在配置文件中" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2807,6 +2754,7 @@ 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 "登录" @@ -2897,22 +2845,23 @@ msgid "Previous" msgstr "上一步" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "导出" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "下一步" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "提示" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "通用" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2923,150 +2872,51 @@ msgctxt "@label" msgid "Checklist" msgstr "检查表" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "选择打印机升级" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker 2." msgstr "请选择适用于 Ultimaker 2 的升级文件。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Block" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3117,170 +2967,170 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "您确定要中止打印吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "粘附信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "导入" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功导出材料至: %1" @@ -3295,412 +3145,437 @@ 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:48 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:61 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:68 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:75 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:83 msgctxt "@title:column" msgid "Unit" msgstr "单位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "基本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "接口" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "语言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "币种:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "主题:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "当设置被更改时自动进行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "自动切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "视区行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "显示悬垂(Overhang)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "当项目被选中时,自动对中视角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "需要令 Cura 的默认缩放操作反转吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "反转视角变焦方向。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟随鼠标方向进行缩放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "正交透视中不支持通过鼠标缩放。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟随鼠标方向缩放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "确保每个模型都保持分离" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自动下降模型到打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "在 G-code 读取器中显示警告信息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code 读取器中的警告信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "层视图要强制进入兼容模式吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "强制层视图兼容模式(需要重新启动)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "应使用哪种类型的摄像头进行渲染?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "摄像头渲染: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "透视" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "打开并保存文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "缩小过大模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大过小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "模型是否应该在加载后被选中?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "选择模型时加载" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "将机器前缀添加到作业名称中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "保存项目文件时是否显示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "保存项目时显示摘要对话框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "打开项目文件时的默认行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "打开项目文件时的默认行为: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "总是询问" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "始终作为一个项目打开" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "始终导入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "总是舍失更改的设置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "总是将更改的设置传输至新配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "隐私" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "启动时检查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)发送打印信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "详细信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "实验性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "使用多打印平台功能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "打印机" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "重命名" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 msgctxt "@label" msgid "Create" msgstr "创建" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:105 msgctxt "@label" msgid "Duplicate" msgstr "复制" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:181 msgctxt "@title:window" msgid "Create Profile" msgstr "创建配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "请为此配置文件提供名称。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "复制配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "重命名配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "导入配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "导出配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "打印机:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "默认配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "自定义配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "使用当前设置 / 重写值更新配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "舍弃当前更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "您当前的设置与选定的配置文件相匹配。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "全局设置" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "市场" @@ -3743,12 +3618,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "帮助(&H)" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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 "你确定要开始一个新项目吗?这将清除打印平台及任何未保存的设置。" @@ -3763,33 +3638,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "搜索设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "将值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "将所有修改值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隐藏此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再显示此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此设置可见" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "配置设定可见性..." @@ -3805,27 +3680,32 @@ msgstr "" "\n" "单击以使这些设置可见。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "该值将会根据每一个挤出机的设置而确定 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3836,7 +3716,7 @@ msgstr "" "\n" "单击以恢复配置文件的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3847,12 +3727,12 @@ msgstr "" "\n" "单击以恢复自动计算的值。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "推荐" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "自定义" @@ -3867,27 +3747,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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。这将在您的对象周围或下方添加一个容易切断的平面区域。" @@ -3904,8 +3779,8 @@ msgstr "您已修改部分配置文件设置。 如果您想对其进行更改 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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 "此质量配置文件不适用于当前材料和喷嘴配置。请更改配置以便启用此配置文件" +msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +msgstr "此质量配置文件不适用于当前材料和喷嘴配置。请进行更改以便启用此质量配置文件。" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3938,9 +3813,9 @@ msgstr "" "\n" "点击打开配置文件管理器。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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." +msgid "Print setup disabled. G-code file can not be modified." msgstr "打印设置已禁用。无法修改 G code 文件。" #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 @@ -3973,7 +3848,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "发送 G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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”发送命令。" @@ -4070,11 +3945,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "收藏" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "通用" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4090,32 +3960,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "打印机(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "材料(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "设为主要挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "启用挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "禁用挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "打印平台(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "配置文件(&P)" @@ -4125,7 +3995,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "摄像头位置(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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)" @@ -4187,12 +4072,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "选择配置" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "查看材料兼容性图表" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "配置" @@ -4217,17 +4097,17 @@ msgctxt "@label" msgid "Printer" msgstr "打印机" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "用胶粘和此材料组合以产生更好的附着。" @@ -4247,42 +4127,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "打开最近使用过的文件(&R)" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "正在打印" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "作业名" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "打印时间" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "预计剩余时间" #: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" +msgid "View type" msgstr "查看类型" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "您好 " +msgid "Object list" +msgstr "对象列表" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "注销" @@ -4292,11 +4177,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "登录" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4307,11 +4187,11 @@ 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" +"- Get exclusive access to print profiles from leading brands" msgstr "" -"- 发送打印作业到局域网外的 Ultimaker 打印机\n" +"- 将打印作业发送到局域网外的 Ultimaker 打印机\n" "- 将 Ultimaker Cura 设置存储到云以便在任何地方使用\n" -"- 获得来自领先品牌的材料配置文件的独家访问权限" +"- 获得来自领先品牌的打印配置文件的独家访问权限" #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 msgctxt "@button" @@ -4323,50 +4203,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "无可用时间估计" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 msgctxt "@button" msgid "Preview" msgstr "预览" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "无法切片" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "时间规格" +msgid "Time estimation" +msgstr "预计时间" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "材料规格" +msgid "Material estimation" +msgstr "预计材料" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4388,282 +4273,296 @@ msgctxt "@label" msgid "Preset printers" msgstr "预设打印机" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "管理打印机" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理材料…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "删除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "市场(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "关闭 Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "您确定要退出 Cura 吗?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "安装包" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "新增打印机" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4724,37 +4623,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "创建新配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "添加打印机到 Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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 打印机”,并在下一个对话框中调整设置以匹配您的打印机。" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "制造商" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "打印机名称" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "新增打印机" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4914,27 +4782,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "保存项目" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "挤出机 %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & 材料" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "材料" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存时不再显示项目摘要" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "保存" @@ -4964,30 +4837,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "导入模型" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "只能看到当前的打印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "空" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "编位到所有打印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "添加打印机" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "编位当前打印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "添加已联网打印机" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "添加未联网打印机" + +#: /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/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "打印机 IP 地址输入栏。" + +#: /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 "帮助我们改进 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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "打印机名称" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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 "开始" + +#: MachineSettingsAction/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打印机的打印机)。" +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "提供一种改变机器设置的方法(如构建体积、喷嘴大小等)。" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3G写" +msgid "Machine Settings action" +msgstr "打印机设置操作" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "查找、管理和安装新的Cura包。" + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "工具箱" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "提供透视视图。" + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "透视视图" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "支持读取 X3D 文件。" + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D 读取器" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "将 G-code 写入至文件。" + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "G-code 写入器" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "检查模型和打印配置,以了解潜在的打印问题并给出建议。" + +#: ModelChecker/plugin.json +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 模式" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "为固件更新提供操作选项。" + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "固件更新程序" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "创建一份合并质量变化配置文件。" + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "配置文件合并器" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "提供对读取 AMF 文件的支持。" + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "AMF 读取器" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "接受 G-Code 并将其发送到一台打印机。 插件也可以更新固件。" + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB 联机打印" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "将 G-code 写入至压缩存档文件。" + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "压缩 G-code 写入器" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "支持写入 Ultimaker 格式包。" + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "UFP 写入器" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "在 Cura 中提供准备阶段。" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "准备阶段" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "提供可移动磁盘热插拔和写入文件的支持。" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "可移动磁盘输出设备插件" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers." +msgstr "管理与最后的3个打印机的网络连接。" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3 网络连接" + +#: SettingsGuide/plugin.json +msgctxt "description" +msgid "Provides extra information and explanations about settings in Cura, with images and animations." +msgstr "提供关于 Cura 设置的额外信息和说明,并附上图片及动画。" + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "设置向导" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "在 Cura 中提供监视阶段。" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "监视阶段" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "检查以进行固件更新。" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "固件更新检查程序" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "提供仿真视图。" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "仿真视图" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "从压缩存档文件读取 G-code。" + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "压缩 G-code 读取器" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "扩展程序(允许用户创建脚本进行后期处理)" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "后期处理" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "创建橡皮擦网格,以便阻止在某些位置打印支撑" + +#: SupportEraser/plugin.json +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." +msgstr "提交匿名切片信息。 可以通过偏好设置禁用。" + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "切片信息" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "提供读取和写入基于 XML 的材料配置文件的功能。" + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "材料配置文件" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "支持从 Cura 旧版本导入配置文件。" + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "旧版 Cura 配置文件读取器" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "提供了从 GCode 文件中导入配置文件的支持。" + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "G-code 配置文件读取器" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "将配置从 Cura 3.2 版本升级至 3.3 版本。" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "版本自 3.2 升级到 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "从Cura 3.3升级到Cura 3.4。" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "版本升级3.3到3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "将配置从 Cura 2.5 版本升级至 2.6 版本。" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "版本自 2.5 升级到 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "将配置从 Cura 2.7 版本升级至 3.0 版本。" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "将配置从 Cura 3.4 版本升级至 3.5 版本。" + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "将配置从 Cura 3.0 版本升级至 3.1 版本。" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "将配置从 Cura 2.6 版本升级至 2.7 版本。" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "版本自 2.6 升级到 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "将配置从 Cura 2.1 版本升级至 2.2 版本。" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "版本自 2.1 升级到 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "将配置从 Cura 2.2 版本升级至 2.4 版本。" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "版本自 2.2 升级到 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "支持从 2D 图像文件生成可打印几何模型的能力。" + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "图像读取器" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "提供 CuraEngine 切片后端的路径。" + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine 后端" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "提供对每个模型的单独设置。" + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "单一模型设置工具" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "提供对读取 3MF 格式文件的支持。" + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF 读取器" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "提供一个基本的实体网格视图。" + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "实体视图" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "允许加载和显示 G-code 文件。" + +#: GCodeReader/plugin.json +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." +msgstr "提供了对导出 Cura 配置文件的支持。" + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura 配置文件写入器" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +msgstr "允许材料制造商使用下拉式 UI 创建新的材料和质量配置文件。" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "打印配置文件助手" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "提供对写入 3MF 文件的支持。" + +#: 3MFWriter/plugin.json +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.)." +msgstr "为最后的机器提供机器操作(例如,热床调平向导,选择升级等)。" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker 打印机操作" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "提供了对导入 Cura 配置文件的支持。" + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura 配置文件读取器" + +#~ 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 文件" @@ -5328,62 +6240,6 @@ msgstr "X3G写" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "点击查看 Ultimaker.com 上的材料兼容情况。" -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "提供一种改变机器设置的方法(如构建体积、喷嘴大小等)。" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "打印机设置操作" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "查找、管理和安装新的Cura包。" - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "工具箱" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "提供透视视图。" - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "透视视图" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "支持读取 X3D 文件。" - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3D 读取器" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "将 G-code 写入至文件。" - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "G-code 写入器" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "检查模型和打印配置,以了解潜在的打印问题并给出建议。" - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ 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 "Shows changes since latest checked version." #~ msgstr "显示最新版本改动。" @@ -5392,14 +6248,6 @@ msgstr "X3G写" #~ msgid "Changelog" #~ msgstr "更新日志" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "为固件更新提供操作选项。" - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "固件更新程序" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "创建一份合并质量变化配置文件。" @@ -5408,14 +6256,6 @@ msgstr "X3G写" #~ msgid "Profile flatener" #~ msgstr "配置文件合并器" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "接受 G-Code 并将其发送到一台打印机。 插件也可以更新固件。" - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USB 联机打印" - #~ msgctxt "description" #~ msgid "Ask the user once if he/she agrees with our license." #~ msgstr "询问用户是否同意我们的许可证。" @@ -5424,278 +6264,6 @@ msgstr "X3G写" #~ msgid "UserAgreement" #~ msgstr "用户协议" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "将 G-code 写入至压缩存档文件。" - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "压缩 G-code 写入器" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "支持写入 Ultimaker 格式包。" - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "UFP 写入器" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "在 Cura 中提供准备阶段。" - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "准备阶段" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "提供可移动磁盘热插拔和写入文件的支持。" - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ 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 a monitor stage in Cura." -#~ msgstr "在 Cura 中提供监视阶段。" - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "监视阶段" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "检查以进行固件更新。" - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "固件更新检查程序" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "提供仿真视图。" - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "仿真视图" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "从压缩存档文件读取 G-code。" - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "压缩 G-code 读取器" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "扩展程序(允许用户创建脚本进行后期处理)" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "后期处理" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "创建橡皮擦网格,以便阻止在某些位置打印支撑" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "支持橡皮擦" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "提交匿名切片信息。 可以通过偏好设置禁用。" - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "切片信息" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "提供读取和写入基于 XML 的材料配置文件的功能。" - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "材料配置文件" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "支持从 Cura 旧版本导入配置文件。" - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "旧版 Cura 配置文件读取器" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "提供了从 GCode 文件中导入配置文件的支持。" - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "G-code 配置文件读取器" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "将配置从 Cura 3.2 版本升级至 3.3 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "版本自 3.2 升级到 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "从Cura 3.3升级到Cura 3.4。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "版本升级3.3到3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "将配置从 Cura 2.5 版本升级至 2.6 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "版本自 2.5 升级到 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "将配置从 Cura 2.7 版本升级至 3.0 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "版本自 2.7 升级到 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "将配置从 Cura 3.4 版本升级至 3.5 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "版本自 3.4 升级到 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "将配置从 Cura 3.0 版本升级至 3.1 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "版本自 3.0 升级到 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "将配置从 Cura 2.6 版本升级至 2.7 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "版本自 2.6 升级到 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "将配置从 Cura 2.1 版本升级至 2.2 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "版本自 2.1 升级到 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "将配置从 Cura 2.2 版本升级至 2.4 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "版本自 2.2 升级到 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "支持从 2D 图像文件生成可打印几何模型的能力。" - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "图像读取器" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "提供 CuraEngine 切片后端的路径。" - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "CuraEngine 后端" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "提供对每个模型的单独设置。" - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "单一模型设置工具" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "提供对读取 3MF 格式文件的支持。" - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MF 读取器" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "提供一个基本的实体网格视图。" - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "实体视图" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "允许加载和显示 G-code 文件。" - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "G-code 读取器" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "提供了对导出 Cura 配置文件的支持。" - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura 配置文件写入器" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "提供对写入 3MF 文件的支持。" - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF 写入器" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "为最后的机器提供机器操作(例如,热床调平向导,选择升级等)。" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ultimaker 打印机操作" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "提供了对导入 Cura 配置文件的支持。" - -#~ msgctxt "name" -#~ msgid "Cura Profile Reader" -#~ msgstr "Cura 配置文件读取器" - #~ msgctxt "@warning:status" #~ msgid "Please generate G-code before saving." #~ msgstr "保存之前,请生成 G-code。" @@ -5736,14 +6304,6 @@ msgstr "X3G写" #~ 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 打印" diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index a88b42ed47..87a3ef4f8e 100644 --- a/resources/i18n/zh_CN/fdmextruder.def.json.po +++ b/resources/i18n/zh_CN/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index a24a3ed9d2..ff5fcdb819 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: PCDotFan , Bothof \n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+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" @@ -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-code 命令 - 以 \n 分行。" +msgstr "" +"在开始时执行的 G-code 命令 - 以 \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-code 命令 - 以 \n 分行。" +msgstr "" +"在结束前执行的 G-code 命令 - 以 \n" +" 分行。" #: fdmprinter.def.json msgctxt "material_guid label" @@ -234,7 +238,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,7 +248,7 @@ msgstr "已启用的挤出机组数目;软件自动设置" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "喷嘴外径" #: fdmprinter.def.json @@ -254,7 +258,7 @@ msgstr "喷嘴尖端的外径。" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "喷嘴长度" #: fdmprinter.def.json @@ -264,7 +268,7 @@ msgstr "喷嘴尖端与打印头最低部分之间的高度差。" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "喷嘴角度" #: fdmprinter.def.json @@ -274,7 +278,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 +308,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 +318,7 @@ msgstr "喷嘴升温到平均超过正常打印温度和待机温度范围的速 #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "冷却速度" #: fdmprinter.def.json @@ -334,7 +338,7 @@ msgstr "挤出机必须保持不活动以便喷嘴冷却的最短时间。 挤 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "G-code 风格" #: fdmprinter.def.json @@ -399,7 +403,7 @@ msgstr "是否使用固件收回命令 (G10/G11) 而不是使用 G1 命令中的 #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "不允许区域" #: fdmprinter.def.json @@ -419,7 +423,7 @@ msgstr "包含不允许喷嘴进入区域的多边形列表。" #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "机器头多边形" #: fdmprinter.def.json @@ -429,7 +433,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 +443,7 @@ msgstr "打印头 2D 轮廓图(包含风扇盖)。" #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "十字轴高度" #: fdmprinter.def.json @@ -469,7 +473,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 @@ -1294,8 +1298,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 +1321,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 +1338,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" @@ -1632,7 +1641,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" @@ -1864,6 +1875,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 +1995,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 +2085,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 +2322,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" @@ -2154,6 +2375,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 +2576,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" @@ -2924,6 +3155,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 +3435,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,12 +3501,12 @@ 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" +msgctxt "support_infill_angles description" msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." msgstr "用于支撑的填充图案的方向。支撑填充图案在水平面中旋转。" @@ -3391,8 +3637,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" @@ -3770,14 +4016,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" @@ -3899,7 +4145,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 "skirt 和打印第一层之间的水平距离。\n这是最小距离。多个 skirt 走线将从此距离向外延伸。" +msgstr "" +"skirt 和打印第一层之间的水平距离。\n" +"这是最小距离。多个 skirt 走线将从此距离向外延伸。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4271,16 +4519,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" @@ -4321,16 +4559,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" @@ -4341,6 +4569,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" @@ -4623,8 +4861,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" @@ -4856,6 +5094,16 @@ 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." +msgstr "在最大分辨率设置中减小分辨率时,允许的最大偏移量。如果增加该值,打印作业的准确性将降低,G-code 将减小。" + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5113,8 +5361,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" @@ -5346,7 +5594,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 "以半速挤出的上行移动的距离。\n这会与之前的层产生更好的附着,而不会将这些层中的材料过度加热。 仅应用于单线打印。" +msgstr "" +"以半速挤出的上行移动的距离。\n" +"这会与之前的层产生更好的附着,而不会将这些层中的材料过度加热。 仅应用于单线打印。" #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5455,7 +5705,7 @@ msgstr "喷嘴和水平下行线之间的距离。 较大的间隙会让斜下 #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "使用自适应图层" #: fdmprinter.def.json @@ -5465,7 +5715,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 @@ -5475,7 +5725,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 @@ -5485,7 +5735,7 @@ msgstr "下一层与前一层的高度差。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Threshold" msgstr "自适应图层阈值" #: fdmprinter.def.json @@ -5703,6 +5953,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5763,6 +6163,138 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" +#~ 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 "皮肤和壁之间的重叠量占皮肤走线宽度的百分比。稍微重叠可让各个壁与皮肤牢固连接。这是皮肤走线和最内壁的平均走线宽度的百分比。" @@ -5900,7 +6432,6 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "在开始后执行的 G-code 命令 - 以 \n" #~ " 分行" @@ -5913,7 +6444,6 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "在结束前执行的 G-code 命令 - 以 \n" #~ " 分行" @@ -5970,7 +6500,6 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ "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 走线将从此距离向外延伸。" diff --git a/resources/i18n/zh_TW/cura.po b/resources/i18n/zh_TW/cura.po index ee9ee5e084..c311a2ab2c 100644 --- a/resources/i18n/zh_TW/cura.po +++ b/resources/i18n/zh_TW/cura.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0100\n" -"PO-Revision-Date: 2019-03-14 14:50+0100\n" +"POT-Creation-Date: 2019-07-16 14:38+0200\n" +"PO-Revision-Date: 2019-07-20 20:39+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.1.1\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:27 msgctxt "@action" msgid "Machine Settings" msgstr "印表機設定" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D 模型助手" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:86 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,16 +70,6 @@ msgstr "" "

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

\n" "

閱讀列印品質指南

" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Changelog" -msgstr "更新日誌" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "顯示更新日誌" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" @@ -95,37 +85,36 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "列印參數已被合併並啟用。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 檔案" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:35 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:71 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 msgctxt "@info:status" msgid "Connected via USB" msgstr "透過 USB 連接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:96 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 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/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 msgctxt "X3g Writer Plugin Description" msgid "Writes X3g to files" @@ -136,6 +125,11 @@ msgctxt "X3g Writer File Description" msgid "X3g File" msgstr "X3g 檔案" +#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 +msgctxt "X3G Writer File Description" +msgid "X3G File" +msgstr "X3G 檔案" + #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 msgctxt "@item:inlistbox" @@ -148,6 +142,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 格式的封包" @@ -206,10 +201,10 @@ 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/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:152 -#: /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:1629 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:134 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:141 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1622 msgctxt "@info:title" msgid "Error" msgstr "錯誤" @@ -238,9 +233,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/OAuth2/AuthorizationService.py:186 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1719 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1612 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1712 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -267,266 +262,267 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "行動裝置" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:93 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "網路連線列印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:76 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:94 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "網路連線列印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:95 msgctxt "@info:status" msgid "Connected over the network." msgstr "已透過網路連接。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 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:93 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "已透過網路連接,但沒有印表機的控制權限。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 msgctxt "@info:title" msgid "Authentication status" msgstr "認証狀態" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:120 msgctxt "@info:title" msgid "Authentication Status" msgstr "認証狀態" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:187 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:198 msgctxt "@action:button" msgid "Retry" msgstr "重試" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "重新發送存取請求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "印表機接受了存取請求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:119 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:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:121 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:65 msgctxt "@action:button" msgid "Request Access" msgstr "請求存取" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:123 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:66 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "向印表機發送存取請求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:201 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 msgctxt "@label" msgid "Unable to start a new print job." msgstr "無法開始新的列印作業。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:203 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:210 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:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:231 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:216 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:238 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "設定不匹配" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:223 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "你確定要使用所選設定進行列印嗎?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:225 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:232 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:252 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:176 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:181 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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:180 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:197 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:194 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:211 msgctxt "@info:status" msgid "Sending data to printer" msgstr "正在向印表機發送資料" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:182 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:196 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:213 msgctxt "@info:title" msgid "Sending Data" msgstr "發送資料中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:261 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:200 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:214 +#: /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:395 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:410 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:38 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 +#: /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:391 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:254 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:button" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:324 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:331 #, 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:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:337 #, 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:353 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:360 #, 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:362 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:369 #, 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:548 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:555 msgctxt "@window:title" msgid "Sync with your printer" msgstr "與你的印表機同步" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:550 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:557 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:552 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:559 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:96 msgctxt "@info:status" msgid "Connected over the network" msgstr "透過網路連接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:275 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:342 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 msgctxt "@info:status" msgid "Print job was successfully sent to the printer." msgstr "列印作業已成功傳送到印表機。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:277 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:343 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:371 msgctxt "@info:title" msgid "Data Sent" msgstr "資料傳送" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:292 msgctxt "@action:button" msgid "View in Monitor" msgstr "使用監控觀看" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:390 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:290 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:411 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:318 #, 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:392 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:294 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:413 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:322 #, 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:393 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:414 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:316 msgctxt "@info:status" msgid "Print finished" msgstr "列印已完成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:573 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:607 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:595 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:629 msgctxt "@label:material" msgid "Empty" msgstr "空的" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:574 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:608 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:596 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:630 msgctxt "@label:material" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:169 msgctxt "@action:button" msgid "Print via Cloud" msgstr "透過雲端服務列印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:152 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:170 msgctxt "@properties:tooltip" msgid "Print via Cloud" msgstr "透過雲端服務列印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:171 msgctxt "@info:status" msgid "Connected via Cloud" msgstr "透過雲端服務連接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:163 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:331 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:182 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:359 msgctxt "@info:title" msgid "Cloud error" msgstr "雲端服務錯誤" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:180 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:199 msgctxt "@info:status" msgid "Could not export print job." msgstr "雲端服務未匯出列印作業。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:330 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 msgctxt "@info:text" msgid "Could not upload the data to the printer." msgstr "雲端服務未上傳資料到印表機。" @@ -541,48 +537,52 @@ msgctxt "@info:status" msgid "today" msgstr "今天" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:151 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:187 msgctxt "@info:description" msgid "There was an error connecting to the cloud." msgstr "連接到雲端服務時發生錯誤。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "正在傳送列印作業" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py:15 msgctxt "@info:status" -msgid "Sending data to remote cluster" -msgstr "正在傳送資料到遠端叢集" +msgid "Uploading via Ultimaker Cloud" +msgstr "透過 Ultimaker Cloud 上傳" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:621 msgctxt "@info:status" msgid "Send and monitor print jobs from anywhere using your Ultimaker account." msgstr "利用你的 Ultimaker 帳號在任何地方傳送和監控列印作業。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:460 -msgctxt "@info:status" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:627 +msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." msgid "Connect to Ultimaker Cloud" msgstr "連接到 Ultimaker Cloud" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:461 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:628 msgctxt "@action" msgid "Don't ask me again for this printer." msgstr "對此印表機不要再次詢問。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:464 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 msgctxt "@action" msgid "Get started" msgstr "開始" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:478 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:637 msgctxt "@info:status" msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." msgstr "現在你可以利用你的 Ultimaker 帳號在任何地方傳送和監控列印作業。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:482 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:643 msgctxt "@info:status" msgid "Connected!" msgstr "已連線!" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:486 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:645 msgctxt "@action" msgid "Review your connection" msgstr "檢查您的連線" @@ -597,7 +597,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "監控" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:124 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 msgctxt "@info" msgid "Could not access update information." msgstr "無法存取更新資訊。" @@ -655,46 +655,11 @@ 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" msgstr "Cura 15.04 列印參數" -#: /home/ruben/Projects/Cura/plugins/R2D2/__init__.py:17 -msgctxt "@item:inmenu" -msgid "Evaluation" -msgstr "評估" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -720,56 +685,56 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 圖片" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:334 +#: /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:334 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:389 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:398 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:407 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:416 +#: /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:364 +#: /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:388 +#: /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:397 +#: /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:406 +#: /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:415 +#: /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 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 "資訊" @@ -800,19 +765,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:763 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:775 msgctxt "@label" msgid "Nozzle" msgstr "噴頭" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:469 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:474 #, 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:472 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:477 msgctxt "@info:title" msgid "Open Project File" msgstr "開啟專案檔案" @@ -827,18 +792,18 @@ 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:328 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:476 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 細項設定" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 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 檔案可能不準確。" @@ -861,7 +826,7 @@ msgctxt "@info:backup_status" msgid "There was an error listing your backups." msgstr "列出備份時發生錯誤。" -#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:121 +#: /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 "嘗試恢復備份時發生錯誤。" @@ -922,243 +887,261 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "預覽" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /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:81 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "外壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "內壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Skin" -msgstr "表層" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Infill" -msgstr "填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "支撐填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "支撐介面" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support" -msgstr "支撐" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "外圍" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Travel" -msgstr "移動" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "回抽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Other" -msgstr "其它" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:309 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "預切片檔案 {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:77 +#: /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:33 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "不支援" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 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:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:123 #, 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/ContainerManager.py:425 -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:428 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "無效的檔案網址:" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:206 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "不覆寫" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:925 +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:915 -#, 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:917 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:927 msgctxt "@info:title" msgid "Settings updated" msgstr "設定更新" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1458 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1481 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "擠出機已停用" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:132 #, 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:139 #, 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:144 #, 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:145 msgctxt "@info:title" msgid "Export succeeded" msgstr "匯出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:172 #, python-brace-format 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:177 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:176 #, 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:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:192 #, 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:196 #, 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:220 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 #, 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:243 #, 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}:" msgstr "從 {0} 匯入列印參數失敗:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功匯入列印參數 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, 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:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:324 #, 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:340 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:359 msgctxt "@label" msgid "Custom profile" msgstr "自訂列印參數" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:356 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:375 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "列印參數缺少列印品質類型定義。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:370 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:389 #, 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:69 +#: /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:306 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "預切片檔案 {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 +msgctxt "@action:button" +msgid "Next" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:61 #, 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/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:85 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +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:91 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +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:109 #, python-brace-format @@ -1171,23 +1154,41 @@ msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "所有檔案 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:665 +#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:269 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /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/Machines/MaterialManager.py:689 msgctxt "@label" msgid "Custom Material" msgstr "自訂耗材" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:666 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:256 +#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 msgctxt "@label" msgid "Custom" msgstr "自訂" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:89 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:91 msgctxt "@info:title" msgid "Build Volume" msgstr "列印範圍" @@ -1202,16 +1203,31 @@ 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:124 +#: /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/OAuth2/AuthorizationService.py:186 +#: /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:197 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "無法連上 Ultimaker 帳號伺服器。" +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "核准此應用程式時,請給予所需的權限。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "嘗試登入時出現意外狀況,請再試一次。" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 msgctxt "@info:status" msgid "Multiplying and placing objects" @@ -1224,7 +1240,7 @@ msgstr "正在放置模型" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /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 "無法在列印範圍內放下全部物件" @@ -1235,19 +1251,19 @@ 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:104 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "無法找到位置" @@ -1378,242 +1394,195 @@ msgstr "日誌" #: /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:341 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "送出報告" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:480 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:504 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在載入印表機..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:781 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:819 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在設定場景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:854 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在載入介面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1059 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1133 #, 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:1618 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1611 #, 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:1628 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1621 #, 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:1718 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1711 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選擇的模型太小無法載入。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:62 -msgctxt "@title" -msgid "Machine Settings" -msgstr "印表機設定" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:81 -msgctxt "@title:tab" -msgid "Printer" -msgstr "印表機" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:100 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +msgctxt "@title:label" msgid "Printer Settings" msgstr "印表機設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:72 msgctxt "@label" msgid "X (Width)" msgstr "X (寬度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:112 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:122 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:132 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:387 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:429 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:441 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:897 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:76 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:90 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:104 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:232 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:272 +#: /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:121 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:86 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (深度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:100 msgctxt "@label" msgid "Z (Height)" msgstr "Z (高度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:143 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:114 msgctxt "@label" msgid "Build plate shape" msgstr "列印平台形狀" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:152 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:127 +msgctxt "@label" msgid "Origin at center" msgstr "原點位於中心" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:160 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:139 +msgctxt "@label" msgid "Heated bed" msgstr "熱床" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:171 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:151 msgctxt "@label" msgid "G-code flavor" msgstr "G-code 類型" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:184 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:176 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "列印頭設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 msgctxt "@label" msgid "X min" msgstr "X 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:195 -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:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:209 msgctxt "@label" msgid "Y min" msgstr "Y 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:205 -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:214 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:228 msgctxt "@label" msgid "X max" msgstr "X 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:215 -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:224 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:249 msgctxt "@label" msgid "Y max" msgstr "Y 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:225 -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:237 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:268 msgctxt "@label" -msgid "Gantry height" -msgstr "龍門高度" +msgid "Gantry Height" +msgstr "吊車高度" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:239 -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:258 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:282 msgctxt "@label" msgid "Number of Extruders" msgstr "擠出機數目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:314 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:341 +msgctxt "@title:label" msgid "Start G-code" msgstr "起始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:324 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "開始時最先執行的 G-code 命令。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:333 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "End G-code" msgstr "結束 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:343 -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:374 -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:386 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "噴頭孔徑" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "相容的耗材直徑" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:404 -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:428 +#: /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:440 +#: /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:452 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷卻風扇數量" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:453 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:473 -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:491 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "擠出機結束 G-code" @@ -1623,7 +1592,7 @@ msgid "Install" msgstr "安裝" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "已安裝" @@ -1639,15 +1608,15 @@ msgid "ratings" 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/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "外掛" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:69 -#: /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:361 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "耗材" @@ -1657,52 +1626,49 @@ msgctxt "@label" msgid "Your rating" msgstr "你的評分" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:98 +#: /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:105 +#: /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:112 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:260 +#: /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:119 +#: /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:181 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:222 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:265 -msgctxt "@label" -msgid "Unknown" -msgstr "未知" - -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:54 +#: /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:73 +#: /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:74 +#: /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:75 +#: /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" @@ -1778,7 +1744,7 @@ 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 "已安裝" @@ -1864,12 +1830,12 @@ msgctxt "@info" msgid "Fetching packages..." msgstr "取得軟體包..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:90 +#: /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:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "電子郵件" @@ -1879,22 +1845,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:85 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:508 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 -msgctxt "@action:button" -msgid "Close" -msgstr "關閉" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1970,38 +1920,40 @@ 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:144 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:181 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "玻璃" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:254 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:249 msgctxt "@info" -msgid "These options are not available because you are monitoring a cloud printer." -msgstr "由於你正在監控一台雲端印表機,因此無法使用這些選項。" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "請更新你印表機的韌體以便遠端管理工作隊列。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:241 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:301 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:300 msgctxt "@label:status" msgid "Loading..." msgstr "正在載入..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:304 msgctxt "@label:status" msgid "Unavailable" msgstr "無法使用" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:308 msgctxt "@label:status" msgid "Unreachable" msgstr "無法連接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:313 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:312 msgctxt "@label:status" msgid "Idle" msgstr "閒置中" @@ -2011,37 +1963,31 @@ msgctxt "@label" msgid "Untitled" msgstr "無標題" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:373 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:374 msgctxt "@label" msgid "Anonymous" msgstr "匿名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:399 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "需要修改設定" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:436 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:439 msgctxt "@action:button" msgid "Details" msgstr "細項" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:130 msgctxt "@label" msgid "Unavailable printer" msgstr "無法使用的印表機" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "First available" msgstr "可用的第一個" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:187 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:132 -msgctxt "@label" -msgid "Glass" -msgstr "玻璃" - #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 msgctxt "@label" msgid "Queued" @@ -2049,181 +1995,189 @@ msgstr "已排入隊列" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 msgctxt "@label link to connect manager" -msgid "Go to Cura Connect" -msgstr "前往 Cura Connect" +msgid "Manage in browser" +msgstr "使用瀏覽器管理" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:102 +#: /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:116 msgctxt "@label" msgid "Print jobs" msgstr "列印作業" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:132 msgctxt "@label" msgid "Total print time" msgstr "總列印時間" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:148 msgctxt "@label" msgid "Waiting for" msgstr "等待" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:246 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "檢視列印歷史記錄" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:50 msgctxt "@window:title" msgid "Existing Connection" msgstr "目前連線中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:52 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/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:69 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "連接到網路印表機" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 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:87 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "增加" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "從下列清單中選擇你的印表機:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:97 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 msgctxt "@action:button" msgid "Edit" msgstr "編輯" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:108 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@action:button" msgid "Remove" msgstr "移除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:116 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 msgctxt "@action:button" msgid "Refresh" msgstr "刷新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:211 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 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:240 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /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:279 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /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:293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /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:317 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 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:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 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:332 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "該網路位址的印表機尚無回應。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:337 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 msgctxt "@action:button" msgid "Connect" msgstr "連接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:351 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "無效的 IP 位址" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /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:366 msgctxt "@title:window" msgid "Printer Address" msgstr "印表機網路位址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:374 -msgctxt "@alabel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" msgid "Enter the IP address or hostname of your printer on the network." -msgstr "輸入印表機在網路上的 IP 位址或主機名。" +msgstr "輸入印表機在網路上的 IP 位址或主機名稱。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:404 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /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/MonitorPrintJobProgressBar.qml:88 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +#: /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/MonitorPrintJobProgressBar.qml:90 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +#: /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/MonitorPrintJobProgressBar.qml:94 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +#: /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 "正在準備..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" msgid "Aborting..." msgstr "正在中斷..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:102 +#: /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:104 +#: /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:106 +#: /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:108 +#: /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/MonitorPrintJobProgressBar.qml:110 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "在 %2 完成 %1" @@ -2327,43 +2281,43 @@ msgctxt "@action:button" msgid "Override" msgstr "覆寫" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:64 +#: /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/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:68 +#: /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:78 +#: /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:81 +#: /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:84 +#: /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:87 +#: /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:94 +#: /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:135 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "鋁" @@ -2373,110 +2327,112 @@ msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "連接到印表機" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:92 +#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:16 +msgctxt "@title" +msgid "Cura Settings Guide" +msgstr "Cura 設定指南" + +#: /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." +"- 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:110 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" -msgid "Please select a network connected printer to monitor." -msgstr "請選擇要監控的網絡連線印表機。" +msgid "Please connect your printer to the network." +msgstr "請將你的印表機連上網路。" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:126 -msgctxt "@info" -msgid "Please connect your Ultimaker printer to your local network." -msgstr "請將你的 Ultimaker 印表機連接到區域網路。" - -#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:165 +#: /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:18 -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:47 +#: /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/SimulationViewMenuComponent.qml:105 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "耗材顏色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:109 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "線條類型" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "進給率" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:117 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "層厚" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:154 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "相容模式" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:229 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" msgid "Travels" msgstr "移動軌跡" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:235 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" msgid "Helpers" msgstr "輔助結構" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:241 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" msgid "Shell" msgstr "外殼" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:247 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "只顯示頂層" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:307 +#: /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/SimulationViewMenuComponent.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "頂 / 底層" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:325 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "內壁" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "最小值" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:432 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "最大值" @@ -2506,30 +2462,25 @@ 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 this 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 this data to Ultimaker and help us improve Cura" -msgstr "允許將這些資料傳送給 Ultimaker 以協助我們改進 Cura" - -#: /home/ruben/Projects/Cura/plugins/R2D2/EvaluationSidebar.qml:49 -msgctxt "@label" -msgid "No print selected" -msgstr "沒有選擇任何模型" +msgid "Allow sending anonymous data" +msgstr "允許傳送匿名資料" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2578,19 +2529,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." @@ -2704,7 +2655,7 @@ msgid "Printer Group" msgstr "印表機群組" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:226 msgctxt "@action:label" msgid "Profile settings" msgstr "列印參數設定" @@ -2717,19 +2668,19 @@ 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/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:250 msgctxt "@action:label" msgid "Name" msgstr "名稱" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:234 msgctxt "@action:label" msgid "Not in profile" msgstr "不在列印參數中" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2808,6 +2759,7 @@ 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 "登入" @@ -2898,22 +2850,23 @@ msgid "Previous" msgstr "前一個" #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:60 -#: /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:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:159 msgctxt "@action:button" msgid "Export" msgstr "匯出" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 -msgctxt "@action:button" -msgid "Next" -msgstr "下一個" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:209 msgctxt "@label" msgid "Tip" msgstr "提示" +#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMaterialMenu.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +msgctxt "@label:category menu label" +msgid "Generic" +msgstr "通用" + #: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:160 msgctxt "@label" msgid "Print experiment" @@ -2924,150 +2877,51 @@ msgctxt "@label" msgid "Checklist" msgstr "檢查清單" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "選擇印表機更新檔案" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker 2." msgstr "請選擇適用於 Ultimaker 2 的更新檔案。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:44 msgctxt "@label" msgid "Olsson Block" msgstr "Olsson Block" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /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" @@ -3118,170 +2972,170 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "你確定要中斷列印嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:73 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:102 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:103 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:127 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:137 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:147 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:157 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:207 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:209 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:224 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:258 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:275 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:293 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:302 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:316 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:323 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:334 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:347 msgctxt "@label" msgid "Adhesion Information" msgstr "附著資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:17 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:373 +#: /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:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:73 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:117 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:131 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:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:148 msgctxt "@action:button" msgid "Import" msgstr "匯入" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:223 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:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:253 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:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:254 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:312 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:313 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:317 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:343 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:347 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:353 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功匯出耗材至:%1" @@ -3296,412 +3150,437 @@ 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:48 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:61 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:68 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:75 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:83 msgctxt "@title:column" msgid "Unit" msgstr "單位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "基本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:126 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:130 msgctxt "@label" msgid "Interface" msgstr "介面" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:141 msgctxt "@label" msgid "Language:" msgstr "語言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:208 msgctxt "@label" msgid "Currency:" msgstr "貨幣:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "主題:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:277 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:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:294 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "當設定變更時自動進行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:302 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:316 msgctxt "@label" msgid "Viewport behavior" msgstr "顯示區設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:324 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:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:333 msgctxt "@option:check" msgid "Display overhang" msgstr "顯示突出部分" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 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:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:346 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "當專案被選中時,自動置中視角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "需要讓 Cura 的預設縮放操作反轉嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "反轉視角縮放方向。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟隨滑鼠方向進行縮放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:371 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +msgstr "正交透視不支援游標縮放功能。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:376 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟隨滑鼠方向縮放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 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:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "確保每個模型都保持分離" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 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:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:421 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動下降模型到列印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "在 g-code 讀取器中顯示警告訊息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:442 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code 讀取器中的警告訊息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "分層檢視要強制進入相容模式嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "強制分層檢視相容模式(需要重新啟動)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:465 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "使用哪種類型的攝影機渲染?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:472 +msgctxt "@window:text" +msgid "Camera rendering: " +msgstr "攝影機渲染:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +msgid "Perspective" +msgstr "透視" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:484 +msgid "Orthogonal" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:515 msgctxt "@label" msgid "Opening and saving files" msgstr "開啟並儲存檔案" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 msgctxt "@option:check" msgid "Scale large models" msgstr "縮小過大模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 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:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:542 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大過小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "模型載入後要設為被選擇的狀態嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 msgctxt "@option:check" msgid "Select models when loaded" msgstr "模型載入後選擇模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:567 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:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "將印表機名稱前綴添加到列印作業名稱中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "儲存專案檔案時是否顯示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "儲存專案時顯示摘要對話框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "開啟專案檔案時的預設行為" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "開啟專案檔案時的預設行為: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "每次都向我確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "總是作為一個專案開啟" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 msgctxt "@option:openProject" msgid "Always import models" msgstr "總是匯入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 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:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:665 msgctxt "@label" msgid "Profiles" msgstr "列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:670 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:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:684 #: /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:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "總是放棄修改過的設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "總是將修改過的設定轉移至新的列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 msgctxt "@label" msgid "Privacy" msgstr "隱私權" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:727 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:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:732 msgctxt "@option:check" msgid "Check for updates on start" msgstr "啟動時檢查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:742 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:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:747 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)發送列印資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:756 msgctxt "@action:button" msgid "More information" msgstr "更多資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:774 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ProfileMenu.qml:23 msgctxt "@label" msgid "Experimental" msgstr "實驗功能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:715 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:781 msgctxt "@info:tooltip" msgid "Use multi build plate functionality" msgstr "使用多列印平台功能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:786 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:359 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "印表機" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /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:134 msgctxt "@action:button" msgid "Rename" msgstr "重命名" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:363 +#: /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:89 msgctxt "@label" msgid "Create" msgstr "建立" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:105 msgctxt "@label" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:181 msgctxt "@title:window" msgid "Create Profile" msgstr "建立列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:183 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "請為此參數提供一個名字。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "複製列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:270 msgctxt "@title:window" msgid "Rename Profile" msgstr "重命名列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:283 msgctxt "@title:window" msgid "Import Profile" msgstr "匯入列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:309 msgctxt "@title:window" msgid "Export Profile" msgstr "匯出列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:364 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "印表機:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Default profiles" msgstr "預設參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:420 msgctxt "@label" msgid "Custom profiles" msgstr "自訂列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:500 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "使用目前設定 / 覆寫值更新列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:507 msgctxt "@action:button" msgid "Discard current changes" msgstr "捨棄目前更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:524 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:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:531 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "你目前的設定與選定的列印參數相匹配。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:550 msgctxt "@title:tab" msgid "Global Settings" msgstr "全局設定" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 msgctxt "@action:button" msgid "Marketplace" msgstr "市集" @@ -3744,12 +3623,12 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "幫助(&H)" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:123 +#: /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:124 +#: /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 "你確定要開始一個新專案嗎?這將清除列印平台及任何未儲存的設定。" @@ -3764,33 +3643,33 @@ msgctxt "@label:textbox" msgid "search settings" msgstr "搜尋設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:466 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "將設定值複製到所有擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:475 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "複製所有改變的設定值到所有擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隱藏此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再顯示此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此設定顯示" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "參數顯示設定..." @@ -3806,27 +3685,32 @@ msgstr "" "\n" "點擊以顯這些設定。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /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:71 +#: /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:166 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 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:170 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "這個數值是由每個擠出機的設定值解析出來的 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:228 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3837,7 +3721,7 @@ msgstr "" "\n" "單擊以復原列印參數的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:322 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3848,12 +3732,12 @@ msgstr "" "\n" "點擊以恢復計算得出的數值。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "推薦" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "自訂選項" @@ -3868,27 +3752,22 @@ 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:29 +#: /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:70 +#: /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/RecommendedSupportSelector.qml:136 -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/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:28 +#: /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:85 +#: /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 "允許列印邊緣或木筏。這將在你的物件周圍或下方添加一個容易切斷的平面區域。" @@ -3905,8 +3784,8 @@ msgstr "你修改過部份列印參數設定。如果你想改變這些設定, #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:355 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 "品質參數不適用於目前的耗材和噴頭設定。請修改這些設定以啟用此品質參數" +msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +msgstr "品質參數無法用於目前的耗材和噴頭設定。請修改這些設定以啟用此品質參數。" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 msgctxt "@tooltip" @@ -3939,9 +3818,9 @@ msgstr "" "\n" "點擊開啟列印參數管理器。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 +#: /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." +msgid "Print setup disabled. G-code file can not be modified." msgstr "列印設定已被停用。 G-code 檔案無法修改。" #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 @@ -3974,7 +3853,7 @@ msgctxt "@label" msgid "Send G-code" msgstr "傳送 G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:364 +#: /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 鍵傳送命令。" @@ -4071,11 +3950,6 @@ msgctxt "@label:category menu label" msgid "Favorites" msgstr "常用" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 -msgctxt "@label:category menu label" -msgid "Generic" -msgstr "通用" - #: /home/ruben/Projects/Cura/resources/qml/Menus/PrinterMenu.qml:25 msgctxt "@label:category menu label" msgid "Network enabled printers" @@ -4091,32 +3965,32 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "印表機(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 msgctxt "@title:menu" msgid "&Material" msgstr "耗材(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "設為主要擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "啟用擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "關閉擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 msgctxt "@title:menu" msgid "&Build plate" msgstr "列印平台(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 msgctxt "@title:settings" msgid "&Profile" msgstr "列印參數(&P)" @@ -4126,7 +4000,22 @@ msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "視角位置(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /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)" @@ -4188,12 +4077,7 @@ msgctxt "@label" msgid "Select configuration" msgstr "選擇設定" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:201 -msgctxt "@label" -msgid "See the material compatibility chart" -msgstr "請參閱耗材相容性圖表" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:274 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 msgctxt "@label" msgid "Configurations" msgstr "設定" @@ -4218,17 +4102,17 @@ msgctxt "@label" msgid "Printer" msgstr "印表機" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:202 +#: /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:239 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 msgctxt "@label" msgid "Material" msgstr "耗材" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "在此耗材組合下,使用膠水以獲得較佳的附著。" @@ -4248,42 +4132,47 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "最近開啟的檔案(&R)" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "正在列印" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "作業名稱" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:161 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "列印時間" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "預計剩餘時間" #: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 msgctxt "@label" -msgid "View types" +msgid "View type" msgstr "檢示類型" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:23 +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 msgctxt "@label" -msgid "Hi " -msgstr "嗨 " +msgid "Object list" +msgstr "物件清單" -#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:40 +#: /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:49 +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 msgctxt "@button" msgid "Sign out" msgstr "登出" @@ -4293,11 +4182,6 @@ msgctxt "@action:button" msgid "Sign in" msgstr "登入" -#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:29 -msgctxt "@label" -msgid "Ultimaker Cloud" -msgstr "Ultimaker Cloud" - #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 msgctxt "@label" msgid "The next generation 3D printing workflow" @@ -4308,7 +4192,7 @@ 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" +"- Get exclusive access to print profiles from leading brands" msgstr "" "- 將列印作業傳送到你區域網路外的 Ultimaker 印表機\n" "- 將你的 Ultimaker Cura 設定儲存在雲端以便隨處使用\n" @@ -4324,50 +4208,55 @@ msgctxt "@label" msgid "No time estimation available" msgstr "沒有時間估計" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:76 +#: /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:117 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 msgctxt "@button" msgid "Preview" msgstr "預覽" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:49 +#: /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:61 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" +msgid "Unable to slice" msgstr "無法切片" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:116 +#: /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:117 +#: /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:131 +#: /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 specification" -msgstr "時間規格" +msgid "Time estimation" +msgstr "時間估計" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 msgctxt "@label" -msgid "Material specification" -msgstr "耗材規格" +msgid "Material estimation" +msgstr "耗材估計" #: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 msgctxt "@label m for meter" @@ -4389,282 +4278,296 @@ msgctxt "@label" msgid "Preset printers" msgstr "預設印表機" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:161 +#: /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:173 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "管理印表機" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:78 +#: /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:85 +#: /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:92 +#: /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:102 +#: /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:112 +#: /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:120 +#: /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:127 +#: /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:134 +#: /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:141 +#: /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:148 +#: /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:155 +#: /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:162 +#: /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:168 +#: /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:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理耗材…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:184 +#: /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:192 +#: /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:204 +#: /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:210 +#: /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:218 +#: /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:226 +#: /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:234 +#: /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:241 +#: /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:251 +#: /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:260 +#: /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:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "刪除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /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:283 +#: /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:303 +#: /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:313 +#: /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:323 +#: /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:330 +#: /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:340 +#: /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:350 +#: /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:359 +#: /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:366 +#: /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:374 +#: /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:381 +#: /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:388 +#: /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:395 +#: /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:403 +#: /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: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 "&Marketplace" msgstr "市集(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:23 +#: /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:181 +#: /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:357 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 msgctxt "@title:window" msgid "Closing Cura" msgstr "關閉 Cura 中" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:487 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:552 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "你確定要結束 Cura 嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:590 #: /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:632 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:691 msgctxt "@window:title" msgid "Install Package" msgstr "安裝軟體包" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:640 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:699 msgctxt "@title:window" msgid "Open File(s)" msgstr "開啟檔案" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:702 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/Cura.qml:713 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:805 msgctxt "@title:window" msgid "Add Printer" msgstr "新增印表機" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:813 +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" msgid "Print Selected Model with %1" @@ -4725,37 +4628,6 @@ msgctxt "@action:button" msgid "Create New Profile" msgstr "建立新的列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:78 -msgctxt "@title:tab" -msgid "Add a printer to Cura" -msgstr "新增印表機到 Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:92 -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”,並在下一個對話窗中調整設定以符合你的印表機。" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:249 -msgctxt "@label" -msgid "Manufacturer" -msgstr "製造商" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:271 -msgctxt "@label" -msgid "Printer Name" -msgstr "印表機名稱" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AddMachineDialog.qml:294 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "新增印表機" - #: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -4915,27 +4787,32 @@ msgctxt "@title:window" msgid "Save Project" msgstr "儲存專案" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:149 msgctxt "@action:label" msgid "Build plate" msgstr "列印平台" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:183 msgctxt "@action:label" msgid "Extruder %1" msgstr "擠出機 %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:198 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & 耗材" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:200 +msgctxt "@action:label" +msgid "Material" +msgstr "耗材" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:272 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "儲存時不再顯示專案摘要" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:291 msgctxt "@action:button" msgid "Save" msgstr "儲存" @@ -4965,30 +4842,1069 @@ msgctxt "@action:button" msgid "Import models" msgstr "匯入模型" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "只顯示目前的列印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 +msgctxt "@label" +msgid "Empty" +msgstr "空的" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:226 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "擺放到所有的列印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 +msgctxt "@label" +msgid "Add a printer" +msgstr "新增印表機" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "擺放到目前的列印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 +msgctxt "@label" +msgid "Add a networked printer" +msgstr "新增網路印表機" -#: X3GWriter/plugin.json +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 +msgctxt "@label" +msgid "Add a non-networked printer" +msgstr "新增非網路印表機" + +#: /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/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "輸入印表機的 IP 地址。" + +#: /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 "協助我們改進 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:207 +msgctxt "@label" +msgid "Printer name" +msgstr "印表機名稱" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:220 +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 "開始" + +#: MachineSettingsAction/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 為原型的印表機)。" +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgstr "提供更改機器設定的方法(如列印範圍,噴頭大小等)。" -#: X3GWriter/plugin.json +#: MachineSettingsAction/plugin.json msgctxt "name" -msgid "X3GWriter" -msgstr "X3G 寫入器" +msgid "Machine Settings action" +msgstr "印表機設定操作" + +#: Toolbox/plugin.json +msgctxt "description" +msgid "Find, manage and install new Cura packages." +msgstr "查詢,管理和安裝新的 Cura 軟體包。" + +#: Toolbox/plugin.json +msgctxt "name" +msgid "Toolbox" +msgstr "工具箱" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "提供透視檢視。" + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "透視檢視" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "提供讀取 X3D 檔案的支援。" + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D 讀取器" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a file." +msgstr "將 G-code 寫入檔案。" + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "G-code Writer" +msgstr "G-code 寫入器" + +#: ModelChecker/plugin.json +msgctxt "description" +msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgstr "檢查模型和列印設定以了解可能發生的問題並給出建議。" + +#: ModelChecker/plugin.json +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 "上帝模式" + +#: FirmwareUpdater/plugin.json +msgctxt "description" +msgid "Provides a machine actions for updating firmware." +msgstr "提供升級韌體用的機器操作。" + +#: FirmwareUpdater/plugin.json +msgctxt "name" +msgid "Firmware Updater" +msgstr "韌體更新器" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattened quality changes profile." +msgstr "建立一個撫平的品質修改參數。" + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile Flattener" +msgstr "參數撫平器" + +#: AMFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading AMF files." +msgstr "提供對讀取 AMF 格式檔案的支援。" + +#: AMFReader/plugin.json +msgctxt "name" +msgid "AMF Reader" +msgstr "AMF 讀取器" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "接受 G-Code 並且傳送到印表機。此外掛也可以更新韌體。" + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB 連線列印" + +#: GCodeGzWriter/plugin.json +msgctxt "description" +msgid "Writes g-code to a compressed archive." +msgstr "將 G-code 寫入壓縮檔案。" + +#: GCodeGzWriter/plugin.json +msgctxt "name" +msgid "Compressed G-code Writer" +msgstr "壓縮檔案 G-code 寫入器" + +#: UFPWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing Ultimaker Format Packages." +msgstr "提供寫入 Ultimaker 格式封包的支援。" + +#: UFPWriter/plugin.json +msgctxt "name" +msgid "UFP Writer" +msgstr "UFP 寫入器" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "在 cura 提供一個準備介面。" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "準備介面" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "提供行動裝置熱插拔和寫入檔案的支援。" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "行動裝置輸出設備外掛" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers." +msgstr "管理與 Ultimaker 3 印表機的網絡連線。" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3 網路連線" + +#: SettingsGuide/plugin.json +msgctxt "description" +msgid "Provides extra information and explanations about settings in Cura, with images and animations." +msgstr "提供關於 Cura 設定額外的圖片動畫資訊和說明。" + +#: SettingsGuide/plugin.json +msgctxt "name" +msgid "Settings Guide" +msgstr "設定指南" + +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "在 cura 提供一個監控介面。" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "監控介面" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "檢查是否有韌體更新。" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "韌體更新檢查" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "提供模擬檢視。" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "模擬檢視" + +#: GCodeGzReader/plugin.json +msgctxt "description" +msgid "Reads g-code from a compressed archive." +msgstr "從一個壓縮檔案中讀取 G-code。" + +#: GCodeGzReader/plugin.json +msgctxt "name" +msgid "Compressed G-code Reader" +msgstr "壓縮檔案 G-code 讀取器" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "擴充程式(允許用戶建立腳本進行後處理)" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "後處理" + +#: SupportEraser/plugin.json +msgctxt "description" +msgid "Creates an eraser mesh to block the printing of support in certain places" +msgstr "建立一個抹除器網格放在某些地方用來防止列印支撐" + +#: SupportEraser/plugin.json +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." +msgstr "提交匿名切片資訊。這項功能可以在偏好設定中關閉。" + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "切片資訊" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "提供讀寫 XML 格式耗材參數的功能。" + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "耗材參數" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "提供匯入 Cura 舊版本列印參數的支援。" + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "舊版 Cura 列印參數讀取器" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "提供匯入 G-code 檔案中列印參數的支援。" + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "G-code Profile Reader" +msgstr "G-code 列印參數讀取器" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." +msgstr "將設定從 Cura 3.2 版本升級至 3.3 版本。" + +#: VersionUpgrade/VersionUpgrade32to33/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.2 to 3.3" +msgstr "升級版本 3.2 到 3.3" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." +msgstr "將設定從 Cura 3.3 版本升級至 3.4 版本。" + +#: VersionUpgrade/VersionUpgrade33to34/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.3 to 3.4" +msgstr "升級版本 3.3 到 3.4" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "將設定從 Cura 2.5 版本升級至 2.6 版本。" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "升級版本 2.5 到 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "將設定從 Cura 2.7 版本升級至 3.0 版本。" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +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." +msgstr "將設定從 Cura 3.4 版本升級至 3.5 版本。" + +#: VersionUpgrade/VersionUpgrade34to35/plugin.json +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." +msgstr "將設定從 Cura 3.0 版本升級至 3.1 版本。" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +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." +msgstr "將設定從 Cura 2.6 版本升級至 2.7 版本。" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "升級版本 2.6 到 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "將設定從 Cura 2.1 版本升級至 2.2 版本。" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "升級版本 2.1 到 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "將設定從 Cura 2.2 版本升級至 2.4 版本。" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "升級版本 2.2 到 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "支援從 2D 圖片檔案產生可列印 3D 模型的能力。" + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "圖片讀取器" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "提供連結到 Cura 切片引擎後台。" + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Cura 引擎後台" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "提供對每個模型的單獨設定。" + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "單一模型設定工具" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "提供讀取 3MF 格式檔案的支援。" + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF 讀取器" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "提供一個基本的實體網格檢視。" + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "實體檢視" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "允許載入和顯示 G-code 檔案。" + +#: GCodeReader/plugin.json +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." +msgstr "提供匯出 Cura 列印參數的支援。" + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura 列印參數寫入器" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +msgstr "允許耗材製造商使用下拉式 UI 建立新的耗材和品質設定參數。" + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "列印參數設定助手" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "提供寫入 3MF 檔案的支援。" + +#: 3MFWriter/plugin.json +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.)." +msgstr "提供 Ultimaker 機器的操作(例如平台調平精靈,選擇升級等)。" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker 印表機操作" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "提供匯入 Cura 列印參數的支援。" + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura 列印參數讀取器" + +#~ 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 檔案" @@ -5329,62 +6245,6 @@ msgstr "X3G 寫入器" #~ msgid "Click to check the material compatibility on Ultimaker.com." #~ msgstr "點擊查看 Ultimaker.com 上的耗材相容性。" -#~ msgctxt "description" -#~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." -#~ msgstr "提供更改機器設定的方法(如列印範圍,噴頭大小等)。" - -#~ msgctxt "name" -#~ msgid "Machine Settings action" -#~ msgstr "印表機設定操作" - -#~ msgctxt "description" -#~ msgid "Find, manage and install new Cura packages." -#~ msgstr "查詢,管理和安裝新的 Cura 軟體包。" - -#~ msgctxt "name" -#~ msgid "Toolbox" -#~ msgstr "工具箱" - -#~ msgctxt "description" -#~ msgid "Provides the X-Ray view." -#~ msgstr "提供透視檢視。" - -#~ msgctxt "name" -#~ msgid "X-Ray View" -#~ msgstr "透視檢視" - -#~ msgctxt "description" -#~ msgid "Provides support for reading X3D files." -#~ msgstr "提供讀取 X3D 檔案的支援。" - -#~ msgctxt "name" -#~ msgid "X3D Reader" -#~ msgstr "X3D 讀取器" - -#~ msgctxt "description" -#~ msgid "Writes g-code to a file." -#~ msgstr "將 G-code 寫入檔案。" - -#~ msgctxt "name" -#~ msgid "G-code Writer" -#~ msgstr "G-code 寫入器" - -#~ msgctxt "description" -#~ msgid "Checks models and print configuration for possible printing issues and give suggestions." -#~ msgstr "檢查模型和列印設定以了解可能發生的問題並給出建議。" - -#~ msgctxt "name" -#~ msgid "Model Checker" -#~ 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 "Shows changes since latest checked version." #~ msgstr "顯示最新版本更動。" @@ -5393,14 +6253,6 @@ msgstr "X3G 寫入器" #~ msgid "Changelog" #~ msgstr "更新日誌" -#~ msgctxt "description" -#~ msgid "Provides a machine actions for updating firmware." -#~ msgstr "提供升級韌體用的機器操作。" - -#~ msgctxt "name" -#~ msgid "Firmware Updater" -#~ msgstr "韌體更新器" - #~ msgctxt "description" #~ msgid "Create a flattend quality changes profile." #~ msgstr "建立一份合併品質變化列印參數。" @@ -5409,14 +6261,6 @@ msgstr "X3G 寫入器" #~ msgid "Profile flatener" #~ msgstr "列印參數合併器" -#~ msgctxt "description" -#~ msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -#~ msgstr "接受 G-Code 並且傳送到印表機。此外掛也可以更新韌體。" - -#~ msgctxt "name" -#~ msgid "USB printing" -#~ msgstr "USB 連線列印" - #~ msgctxt "description" #~ msgid "Ask the user once if he/she agrees with our license." #~ msgstr "詢問使用者是否同意我們的授權協議。" @@ -5425,278 +6269,6 @@ msgstr "X3G 寫入器" #~ msgid "UserAgreement" #~ msgstr "使用者授權" -#~ msgctxt "description" -#~ msgid "Writes g-code to a compressed archive." -#~ msgstr "將 G-code 寫入壓縮檔案。" - -#~ msgctxt "name" -#~ msgid "Compressed G-code Writer" -#~ msgstr "壓縮檔案 G-code 寫入器" - -#~ msgctxt "description" -#~ msgid "Provides support for writing Ultimaker Format Packages." -#~ msgstr "提供寫入 Ultimaker 格式封包的支援。" - -#~ msgctxt "name" -#~ msgid "UFP Writer" -#~ msgstr "UFP 寫入器" - -#~ msgctxt "description" -#~ msgid "Provides a prepare stage in Cura." -#~ msgstr "在 cura 提供一個準備介面。" - -#~ msgctxt "name" -#~ msgid "Prepare Stage" -#~ msgstr "準備介面" - -#~ msgctxt "description" -#~ msgid "Provides removable drive hotplugging and writing support." -#~ msgstr "提供行動裝置熱插拔和寫入檔案的支援。" - -#~ msgctxt "name" -#~ msgid "Removable Drive Output Device Plugin" -#~ 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 a monitor stage in Cura." -#~ msgstr "在 cura 提供一個監控介面。" - -#~ msgctxt "name" -#~ msgid "Monitor Stage" -#~ msgstr "監控介面" - -#~ msgctxt "description" -#~ msgid "Checks for firmware updates." -#~ msgstr "檢查是否有韌體更新。" - -#~ msgctxt "name" -#~ msgid "Firmware Update Checker" -#~ msgstr "韌體更新檢查" - -#~ msgctxt "description" -#~ msgid "Provides the Simulation view." -#~ msgstr "提供模擬檢視。" - -#~ msgctxt "name" -#~ msgid "Simulation View" -#~ msgstr "模擬檢視" - -#~ msgctxt "description" -#~ msgid "Reads g-code from a compressed archive." -#~ msgstr "從一個壓縮檔案中讀取 G-code。" - -#~ msgctxt "name" -#~ msgid "Compressed G-code Reader" -#~ msgstr "壓縮檔案 G-code 讀取器" - -#~ msgctxt "description" -#~ msgid "Extension that allows for user created scripts for post processing" -#~ msgstr "擴充程式(允許用戶建立腳本進行後處理)" - -#~ msgctxt "name" -#~ msgid "Post Processing" -#~ msgstr "後處理" - -#~ msgctxt "description" -#~ msgid "Creates an eraser mesh to block the printing of support in certain places" -#~ msgstr "建立一個抹除器網格放在某些地方用來防止列印支撐" - -#~ msgctxt "name" -#~ msgid "Support Eraser" -#~ msgstr "支援抹除器" - -#~ msgctxt "description" -#~ msgid "Submits anonymous slice info. Can be disabled through preferences." -#~ msgstr "提交匿名切片資訊。這項功能可以在偏好設定中關閉。" - -#~ msgctxt "name" -#~ msgid "Slice info" -#~ msgstr "切片資訊" - -#~ msgctxt "description" -#~ msgid "Provides capabilities to read and write XML-based material profiles." -#~ msgstr "提供讀寫 XML 格式耗材參數的功能。" - -#~ msgctxt "name" -#~ msgid "Material Profiles" -#~ msgstr "耗材參數" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from legacy Cura versions." -#~ msgstr "提供匯入 Cura 舊版本列印參數的支援。" - -#~ msgctxt "name" -#~ msgid "Legacy Cura Profile Reader" -#~ msgstr "舊版 Cura 列印參數讀取器" - -#~ msgctxt "description" -#~ msgid "Provides support for importing profiles from g-code files." -#~ msgstr "提供匯入 G-code 檔案中列印參數的支援。" - -#~ msgctxt "name" -#~ msgid "G-code Profile Reader" -#~ msgstr "G-code 列印參數讀取器" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.2 to Cura 3.3." -#~ msgstr "將設定從 Cura 3.2 版本升級至 3.3 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.2 to 3.3" -#~ msgstr "升級版本 3.2 到 3.3" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.3 to Cura 3.4." -#~ msgstr "將設定從 Cura 3.3 版本升級至 3.4 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.3 to 3.4" -#~ msgstr "升級版本 3.3 到 3.4" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -#~ msgstr "將設定從 Cura 2.5 版本升級至 2.6 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.5 to 2.6" -#~ msgstr "升級版本 2.5 到 2.6" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -#~ msgstr "將設定從 Cura 2.7 版本升級至 3.0 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.7 to 3.0" -#~ msgstr "升級版本 2.7 到 3.0" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." -#~ msgstr "將設定從 Cura 3.4 版本升級至 3.5 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.4 to 3.5" -#~ msgstr "升級版本 3.4 到 3.5" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." -#~ msgstr "將設定從 Cura 3.0 版本升級至 3.1 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 3.0 to 3.1" -#~ msgstr "升級版本 3.0 到 3.1" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -#~ msgstr "將設定從 Cura 2.6 版本升級至 2.7 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.6 to 2.7" -#~ msgstr "升級版本 2.6 到 2.7" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -#~ msgstr "將設定從 Cura 2.1 版本升級至 2.2 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.1 to 2.2" -#~ msgstr "升級版本 2.1 到 2.2" - -#~ msgctxt "description" -#~ msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -#~ msgstr "將設定從 Cura 2.2 版本升級至 2.4 版本。" - -#~ msgctxt "name" -#~ msgid "Version Upgrade 2.2 to 2.4" -#~ msgstr "升級版本 2.2 到 2.4" - -#~ msgctxt "description" -#~ msgid "Enables ability to generate printable geometry from 2D image files." -#~ msgstr "支援從 2D 圖片檔案產生可列印 3D 模型的能力。" - -#~ msgctxt "name" -#~ msgid "Image Reader" -#~ msgstr "圖片讀取器" - -#~ msgctxt "description" -#~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "提供連結到 Cura 切片引擎後台。" - -#~ msgctxt "name" -#~ msgid "CuraEngine Backend" -#~ msgstr "Cura 引擎後台" - -#~ msgctxt "description" -#~ msgid "Provides the Per Model Settings." -#~ msgstr "提供對每個模型的單獨設定。" - -#~ msgctxt "name" -#~ msgid "Per Model Settings Tool" -#~ msgstr "單一模型設定工具" - -#~ msgctxt "description" -#~ msgid "Provides support for reading 3MF files." -#~ msgstr "提供讀取 3MF 格式檔案的支援。" - -#~ msgctxt "name" -#~ msgid "3MF Reader" -#~ msgstr "3MF 讀取器" - -#~ msgctxt "description" -#~ msgid "Provides a normal solid mesh view." -#~ msgstr "提供一個基本的實體網格檢視。" - -#~ msgctxt "name" -#~ msgid "Solid View" -#~ msgstr "實體檢視" - -#~ msgctxt "description" -#~ msgid "Allows loading and displaying G-code files." -#~ msgstr "允許載入和顯示 G-code 檔案。" - -#~ msgctxt "name" -#~ msgid "G-code Reader" -#~ msgstr "G-code 讀取器" - -#~ msgctxt "description" -#~ msgid "Provides support for exporting Cura profiles." -#~ msgstr "提供匯出 Cura 列印參數的支援。" - -#~ msgctxt "name" -#~ msgid "Cura Profile Writer" -#~ msgstr "Cura 列印參數寫入器" - -#~ msgctxt "description" -#~ msgid "Provides support for writing 3MF files." -#~ msgstr "提供寫入 3MF 檔案的支援。" - -#~ msgctxt "name" -#~ msgid "3MF Writer" -#~ msgstr "3MF 寫入器" - -#~ msgctxt "description" -#~ msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." -#~ msgstr "提供 Ultimaker 機器的操作(例如平台調平精靈,選擇升級等)。" - -#~ msgctxt "name" -#~ msgid "Ultimaker machine actions" -#~ msgstr "Ultimaker 印表機操作" - -#~ msgctxt "description" -#~ msgid "Provides support for importing Cura profiles." -#~ msgstr "提供匯入 Cura 列印參數的支援。" - -#~ msgctxt "name" -#~ msgid "Cura Profile Reader" -#~ msgstr "Cura 列印參數讀取器" - #~ msgctxt "@warning:status" #~ msgid "Please generate G-code before saving." #~ msgstr "請在儲存前產出 G-code。" @@ -5737,14 +6309,6 @@ msgstr "X3G 寫入器" #~ 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 無線網路盒列印" diff --git a/resources/i18n/zh_TW/fdmextruder.def.json.po b/resources/i18n/zh_TW/fdmextruder.def.json.po index 8e6ae379bc..ea48cff29d 100644 --- a/resources/i18n/zh_TW/fdmextruder.def.json.po +++ b/resources/i18n/zh_TW/fdmextruder.def.json.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" "PO-Revision-Date: 2019-03-03 14:09+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" diff --git a/resources/i18n/zh_TW/fdmprinter.def.json.po b/resources/i18n/zh_TW/fdmprinter.def.json.po index 2903113564..bd36f9cb2a 100644 --- a/resources/i18n/zh_TW/fdmprinter.def.json.po +++ b/resources/i18n/zh_TW/fdmprinter.def.json.po @@ -5,17 +5,17 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.0\n" +"Project-Id-Version: Cura 4.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-02-26 16:36+0000\n" -"PO-Revision-Date: 2019-03-09 20:53+0800\n" +"POT-Creation-Date: 2019-07-16 14:38+0000\n" +"PO-Revision-Date: 2019-07-23 21:08+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.2\n" +"X-Generator: Poedit 2.2.3\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -237,7 +237,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 +247,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 +257,7 @@ msgstr "噴頭尖端的外徑。" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "噴頭長度" #: fdmprinter.def.json @@ -267,7 +267,7 @@ msgstr "噴頭尖端與列印頭最低部分之間的高度差。" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "噴頭角度" #: fdmprinter.def.json @@ -277,7 +277,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 +307,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 +317,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 +337,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 +402,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 +432,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 +442,7 @@ msgstr "列印頭 2D 輪廓圖(包含風扇蓋)。" #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "吊車高度" #: fdmprinter.def.json @@ -472,7 +472,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 @@ -1297,8 +1297,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 +1320,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 +1337,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" @@ -1869,6 +1874,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 +1994,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 +2084,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 +2321,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 @@ -2159,6 +2374,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 +2575,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" @@ -2929,6 +3154,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 +3434,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,12 +3500,12 @@ 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" +msgctxt "support_infill_angles description" msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." msgstr "支撐填充樣式的方向。 支撐填充樣式的旋轉方向是在水平面上旋轉。" @@ -3396,8 +3636,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" @@ -3775,14 +4015,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" @@ -4278,16 +4518,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" @@ -4328,16 +4558,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" @@ -4348,6 +4568,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" @@ -4630,7 +4860,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 @@ -4863,6 +5093,16 @@ 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." +msgstr "「最高解析度」設定在降低解析度時允許的最大偏差。如果增加此值,列印精度會較差但 G-code 會較小。" + #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5120,8 +5360,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" @@ -5464,18 +5704,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" @@ -5484,8 +5724,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" @@ -5494,8 +5734,8 @@ msgstr "下一列印層與前一列印層的層高差。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "適應層高門檻值" +msgid "Adaptive Layers Threshold" +msgstr "適應性層高門檻值" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" @@ -5712,6 +5952,156 @@ 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 "command_line_settings label" msgid "Command Line Settings" @@ -5772,6 +6162,138 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在將模型從檔案中載入時套用在模型上的轉換矩陣。" +#~ 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 "表層與牆壁的重疊量佔表層線寬的百分比。輕微的重疊能讓填充與表層牢固地連接。這是表層線寬和最內層牆壁線寬平均的百分比。" 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/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/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/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/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/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 f6bd7ce588..f01b9538bd 100644 --- a/resources/qml/Account/GeneralOperations.qml +++ b/resources/qml/Account/GeneralOperations.qml @@ -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 b6ae1efff6..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 The argument is a username.", "Hi %1").format(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/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 886ebf65ca..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() } } @@ -64,7 +70,7 @@ Column } // 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..4c143dcf0b 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,6 +14,7 @@ import Cura 1.1 as Cura import "Dialogs" import "Menus" import "MainWindow" +import "WelcomePages" UM.MainWindow { @@ -41,24 +42,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 +225,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 +260,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 +280,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,7 +295,7 @@ UM.MainWindow anchors { - left: parent.left + left: toolbar.right bottom: parent.bottom margins: UM.Theme.getSize("default_margin").width } @@ -340,6 +395,7 @@ UM.MainWindow PrintSetupTooltip { id: tooltip + sourceWidth: UM.Theme.getSize("print_setup_widget").width } } @@ -517,7 +573,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 +588,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 +749,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 +804,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 +848,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/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..f6436f62c5 100644 --- a/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml +++ b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml @@ -26,7 +26,7 @@ UM.Dialog minimumHeight: maximumHeight minimumWidth: maximumWidth - modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal + modality: Qt.WindowModal property var fileUrl diff --git a/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml b/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml index 3dcd4b6236..0df914805a 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 diff --git a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml index 25cde33c99..b8c9560b3a 100644 --- a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml +++ b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml @@ -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,7 +123,18 @@ 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 } } @@ -140,7 +151,7 @@ UM.Dialog } Label { - text: Cura.MachineManager.activeVariantBuildplateName + text: Cura.activeStack != null ? Cura.MachineManager.activeStack.variant.name : "" width: Math.floor(scroll.width / 3) | 0 } } @@ -153,7 +164,9 @@ UM.Dialog { height: childrenRect.height width: parent.width - Label + property string variantName: Cura.MachineManager.activeVariantNames[modelData] !== undefined ? Cura.MachineManager.activeVariantNames[modelData]: "" + property string materialName: Cura.MachineManager.getExtruder(modelData).material.name !== undefined ? Cura.MachineManager.getExtruder(modelData).material.name : "" + Label { text: { var extruder = Number(modelData) @@ -175,14 +188,30 @@ UM.Dialog { 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 } Label { - text: Cura.MachineManager.activeVariantNames[modelData] + ", " + Cura.MachineManager.getExtruder(modelData).material.name + text: + { + if(variantName !== "" && materialName !== "") + { + return variantName + ", " + materialName + } + return materialName + } + 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/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/MachineSettings/ComboBoxWithOptions.qml b/resources/qml/MachineSettings/ComboBoxWithOptions.qml new file mode 100644 index 0000000000..fbb05c23b1 --- /dev/null +++ b/resources/qml/MachineSettings/ComboBoxWithOptions.qml @@ -0,0 +1,139 @@ +// 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() + } + + 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..5921a39933 --- /dev/null +++ b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml @@ -0,0 +1,204 @@ +// 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 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 + + // 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("medium") + 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: RegExpValidator { regExp: allowNegativeValue ? /-?[0-9\.,]{0,6}/ : /[0-9\.,]{0,6}/ } + + 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..2eaaed4524 --- /dev/null +++ b/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml @@ -0,0 +1,79 @@ +// 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: machineXMaxField + UM.I18nCatalog { id: catalog; name: "cura" } + + containerStackId: Cura.MachineManager.activeMachineId + 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]) + } + result = Math.abs(result) + return result + } + + valueValidator: RegExpValidator { regExp: /[0-9\.,]{0,6}/ } + valueText: 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 + var factor = (axisMinOrMax == "min") ? -1 : 1 + polygon[start_i1][0] = newValue * factor + polygon[start_i1 + 1][0] = newValue * factor + } + else // y min/y max + { + var start_i1 = (axisMinOrMax == "min") ? 1 : 0 + var factor = (axisMinOrMax == "min") ? -1 : 1 + polygon[start_i1][1] = newValue * factor + polygon[start_i1 + 2][1] = newValue * factor + } + var polygon_string = JSON.stringify(polygon) + if (polygon_string != propertyProvider.properties.value) + { + propertyProvider.setPropertyValue("value", polygon_string) + forceUpdateOnChangeFunction() + } + } +} 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..7f343eb8f4 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 } } } 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/ConfigurationMenu/ConfigurationMenu.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml index 1e3b48b1df..77164429b3 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml @@ -175,59 +175,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 708606f483..6f3d6ffa17 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 @@ -201,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 @@ -223,7 +223,7 @@ Item { 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. @@ -242,7 +242,7 @@ Item Row { - height: visible ? childrenRect.height: 0 + height: visible ? UM.Theme.getSize("print_setup_big_item").height : 0 visible: Cura.MachineManager.hasMaterials Label @@ -267,7 +267,7 @@ Item tooltip: text 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 @@ -302,7 +302,7 @@ Item Row { - height: visible ? childrenRect.height: 0 + height: visible ? UM.Theme.getSize("print_setup_big_item").height : 0 visible: Cura.MachineManager.hasVariants Label @@ -319,9 +319,9 @@ 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; 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/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index 886216dab0..3d7dd1b6c5 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -31,6 +31,7 @@ Menu return Cura.MachineManager.activeVariantNames[extruderIndex] == model.hotend_name } exclusiveGroup: group + 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/SettingsMenu.qml b/resources/qml/Menus/SettingsMenu.qml index 00337ea8e1..28761866dd 100644 --- a/resources/qml/Menus/SettingsMenu.qml +++ b/resources/qml/Menus/SettingsMenu.qml @@ -14,14 +14,11 @@ Menu PrinterMenu { title: catalog.i18nc("@title:menu menubar:settings", "&Printer") } - onAboutToShow: extruderInstantiator.active = true - onAboutToHide: extruderInstantiator.active = false + property var activeMachine: Cura.MachineManager.activeMachine Instantiator { id: extruderInstantiator - model: Cura.MachineManager.activeMachine.extruderList - active: false - asynchronous: true + model: activeMachine == null ? null : activeMachine.extruderList Menu { title: modelData.name @@ -50,7 +47,7 @@ Menu MenuItem { text: catalog.i18nc("@action:inmenu", "Disable Extruder") - onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) + onTriggered: Cura.MachineManager.setExtruderEnabled(index, false) visible: Cura.MachineManager.getExtruder(model.index).isEnabled enabled: Cura.MachineManager.numberExtrudersEnabled > 1 } diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 59e6dd24d0..a4ded0980c 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -24,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..683d0ed52b --- /dev/null +++ b/resources/qml/ObjectItemButton.qml @@ -0,0 +1,55 @@ +// 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" + } + + onClicked: Cura.SceneController.changeSelection(index) +} diff --git a/resources/qml/ObjectSelector.qml b/resources/qml/ObjectSelector.qml new file mode 100644 index 0000000000..9bf0e18809 --- /dev/null +++ b/resources/qml/ObjectSelector.qml @@ -0,0 +1,137 @@ +// 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 ? scroll.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 + + ScrollView + { + id: scroll + width: parent.width + clip: true + padding: UM.Theme.getSize("default_lining").width + + contentItem: ListView + { + id: listView + + // 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("objects_menu_size").height + + // We use an extra property here, since we only want to to be informed about the content size changes. + onContentHeightChanged: + { + // It can sometimes happen that (due to animations / updates) the contentHeight is -1. + // This can cause a bunch of updates to trigger oneother, leading to a weird loop. + if(contentHeight >= 0) + { + scroll.height = Math.min(contentHeight, maximumHeight) + scroll.topPadding + scroll.bottomPadding + } + } + + Component.onCompleted: + { + scroll.height = Math.min(contentHeight, maximumHeight) + scroll.topPadding + scroll.bottomPadding + } + 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 47cc11632c..4adb3e72d2 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -95,6 +95,10 @@ UM.PreferencesPage UM.Preferences.resetPreference("view/top_layer_count"); topLayerCountCheckbox.checked = boolCheck(UM.Preferences.getValue("view/top_layer_count")) + 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")) @@ -154,7 +158,7 @@ UM.PreferencesPage append({ text: "日本語", code: "ja_JP" }) append({ text: "한국어", code: "ko_KR" }) append({ text: "Nederlands", code: "nl_NL" }) - append({ text: "Polski", code: "pl_PL" }) + //Polish is disabled for being incomplete: 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" }) @@ -330,7 +334,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") @@ -344,7 +349,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?") @@ -362,14 +368,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; + } } } @@ -436,6 +458,50 @@ UM.PreferencesPage } } + 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 diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 6f214a7efb..594cdbebf3 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 @@ -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") diff --git a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml index 8db8e99d44..487c87f07c 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 @@ -13,7 +13,7 @@ import Cura 1.0 as Cura 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 diff --git a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml index eb4a63250f..b54af103fe 100644 --- a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml +++ b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml @@ -82,6 +82,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..96f6730029 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 } diff --git a/resources/qml/Preferences/Materials/MaterialsPage.qml b/resources/qml/Preferences/Materials/MaterialsPage.qml index 4f3917f5ea..a0ce3c4b49 100644 --- a/resources/qml/Preferences/Materials/MaterialsPage.qml +++ b/resources/qml/Preferences/Materials/MaterialsPage.qml @@ -13,7 +13,6 @@ Item { id: base - property QtObject materialManager: CuraApplication.getMaterialManager() // Keep PreferencesDialog happy property var resetEnabled: false property var currentItem: null @@ -41,14 +40,29 @@ 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() // Every time the selected item has changed, notify to the details panel onCurrentItemChanged: { forceActiveFocus() 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,6 +95,7 @@ Item // Activate button Button { + id: activateMenuButton text: catalog.i18nc("@action:button", "Activate") iconName: "list-activate" enabled: !isCurrentItemActivated && Cura.MachineManager.hasMaterials @@ -98,12 +113,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 = CuraApplication.getMaterialManager().createMaterial(); base.toActivateNewMaterial = true; } } @@ -111,13 +127,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 = CuraApplication.getMaterialManager().duplicateMaterial(base.currentItem.container_node); base.toActivateNewMaterial = true; } } @@ -125,9 +142,10 @@ 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 && base.materialManager.canMaterialBeRemoved(base.currentItem.container_node) + enabled: base.hasCurrentItem && !base.currentItem.is_read_only && !base.isCurrentItemActivated && CuraApplication.getMaterialManager().canMaterialBeRemoved(base.currentItem.container_node) onClicked: { forceActiveFocus(); @@ -138,6 +156,7 @@ Item // Import button Button { + id: importMenuButton text: catalog.i18nc("@action:button", "Import") iconName: "document-import" onClicked: @@ -151,6 +170,7 @@ Item // Export button Button { + id: exportMenuButton text: catalog.i18nc("@action:button", "Export") iconName: "document-export" onClicked: @@ -200,10 +220,15 @@ Item visible: text != "" text: { - var caption = catalog.i18nc("@action:label", "Printer") + ": " + Cura.MachineManager.activeMachineName; + var caption = catalog.i18nc("@action:label", "Printer") + ": " + Cura.MachineManager.activeMachine.name; if (Cura.MachineManager.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 +285,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); + CuraApplication.getMaterialManager().removeMaterial(base.currentItem.container_node); } } diff --git a/resources/qml/Preferences/Materials/MaterialsSlot.qml b/resources/qml/Preferences/Materials/MaterialsSlot.qml index 2f4847103b..0e60bb6558 100644 --- a/resources/qml/Preferences/Materials/MaterialsSlot.qml +++ b/resources/qml/Preferences/Materials/MaterialsSlot.qml @@ -19,8 +19,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 +51,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 +60,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,10 +82,10 @@ Rectangle { if (materialSlot.is_favorite) { - base.materialManager.removeFavorite(material.root_material_id) + CuraApplication.getMaterialManager().removeFavorite(material.root_material_id) return } - base.materialManager.addFavorite(material.root_material_id) + CuraApplication.getMaterialManager().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..2c1e2128e1 100644 --- a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml @@ -14,8 +14,11 @@ 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 Rectangle @@ -23,7 +26,7 @@ Item 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") } @@ -55,7 +58,7 @@ Item } 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 @@ -92,7 +95,7 @@ Item 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 +138,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 77565a9687..30b2474e09 100644 --- a/resources/qml/Preferences/Materials/MaterialsView.qml +++ b/resources/qml/Preferences/Materials/MaterialsView.qml @@ -14,8 +14,6 @@ TabView { id: base - property QtObject materialManager: CuraApplication.getMaterialManager() - property QtObject properties property var currentMaterialNode: null @@ -29,6 +27,8 @@ TabView property double spoolLength: calculateSpoolLength() property real costPerMeter: calculateCostPerMeter() + signal resetSelectedMaterial() + property bool reevaluateLinkedMaterials: false property string linkedMaterialNames: { @@ -105,29 +105,21 @@ 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); + 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") } @@ -393,7 +385,7 @@ TabView { model: UM.SettingDefinitionsModel { - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" visibilityHandler: Cura.MaterialSettingsVisibilityHandler { } expanded: ["*"] } @@ -461,7 +453,7 @@ TabView UM.ContainerPropertyProvider { id: machinePropertyProvider - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" watchedProperties: [ "value" ] key: model.key } @@ -573,7 +565,7 @@ TabView } // update the values - base.materialManager.setMaterialName(base.currentMaterialNode, new_name) + CuraApplication.getMaterialManager().setMaterialName(base.currentMaterialNode, new_name) properties.name = new_name } diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 52c69b780e..0bac5aefca 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -69,6 +69,7 @@ Item // Activate button Button { + id: activateMenuButton text: catalog.i18nc("@action:button", "Activate") iconName: "list-activate" enabled: !isCurrentItemActivated @@ -84,6 +85,7 @@ Item // Create button Button { + id: createMenuButton text: catalog.i18nc("@label", "Create") iconName: "list-add" enabled: base.canCreateProfile && !Cura.MachineManager.stacksHaveErrors @@ -99,6 +101,7 @@ Item // Duplicate button Button { + id: duplicateMenuButton text: catalog.i18nc("@label", "Duplicate") iconName: "list-add" enabled: !base.canCreateProfile @@ -114,6 +117,7 @@ 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 @@ -126,6 +130,7 @@ Item // Rename button Button { + id: renameMenuButton text: catalog.i18nc("@action:button", "Rename") iconName: "edit-rename" enabled: base.hasCurrentItem && !base.currentItem.is_read_only @@ -139,6 +144,7 @@ Item // Import button Button { + id: importMenuButton text: catalog.i18nc("@action:button", "Import") iconName: "document-import" onClicked: { @@ -149,6 +155,7 @@ Item // Export button Button { + id: exportMenuButton text: catalog.i18nc("@action:button", "Export") iconName: "document-export" enabled: base.hasCurrentItem && !base.currentItem.is_read_only @@ -420,6 +427,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 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/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/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/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..c37823ba82 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 @@ -66,7 +78,8 @@ Button model: printerTypesList delegate: Cura.PrinterTypeLabel { - text: Cura.MachineManager.getAbbreviatedMachineName(modelData) + autoFit: printerTypeLabelAutoFit + text: printerTypeLabelConversionFunction(modelData) } } } @@ -75,29 +88,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..9c52c15580 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.activeMachineId == 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/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..0b7f494a7d 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 @@ -19,125 +20,7 @@ SettingItem textRole: "value" 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" - } - } + highlighted: base.hovered onActivated: { @@ -170,29 +53,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/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 6bfcd66557..04b601f983 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -36,6 +36,20 @@ Item property var resolve: Cura.MachineManager.activeStackId !== Cura.MachineManager.activeMachineId ? propertyProvider.properties.resolve : "None" 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) @@ -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 @@ -179,7 +198,7 @@ Item { id: revertButton - visible: base.stackLevel == 0 && base.showRevertButton + visible: base.resetButtonVisible height: parent.height width: height @@ -213,7 +232,7 @@ Item 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 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..9c964347ca 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 @@ -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 @@ -271,6 +271,8 @@ Item property var globalPropertyProvider: inheritStackProvider property var externalResetHandler: false + property string activeMachineId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id : "" + //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. @@ -314,16 +316,15 @@ Item 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 delegate.activeMachineId } if (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) { @@ -336,7 +337,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 delegate.activeMachineId } } @@ -345,7 +346,7 @@ Item UM.SettingPropertyProvider { id: inheritStackProvider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id: "" key: model.key watchedProperties: [ "limit_to_extruder" ] } @@ -354,7 +355,7 @@ Item { id: provider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: delegate.activeMachineId key: model.key ? model.key : "" watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ] storeIndex: 0 @@ -371,7 +372,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: { @@ -511,12 +512,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 +540,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 +555,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..5750e935f4 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,30 @@ Row ViewOrientationButton { iconSource: UM.Theme.getIcon("view_3d") - onClicked: UM.Controller.rotateView("3d", 0) + onClicked: Cura.Actions.view3DCamera.trigger() } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_front") - onClicked: UM.Controller.rotateView("home", 0) + onClicked: Cura.Actions.viewFrontCamera.trigger() } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_top") - onClicked: UM.Controller.rotateView("y", 90) + onClicked: Cura.Actions.viewTopCamera.trigger() } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_left") - onClicked: UM.Controller.rotateView("x", 90) + onClicked: Cura.Actions.viewLeftSideCamera.trigger() } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_right") - onClicked: UM.Controller.rotateView("x", -90) + onClicked: Cura.Actions.viewRightSideCamera.trigger() } } diff --git a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml new file mode 100644 index 0000000000..6b074d2d8e --- /dev/null +++ b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml @@ -0,0 +1,229 @@ +// 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 + + cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item. + + 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..95eff0465a --- /dev/null +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -0,0 +1,251 @@ +// 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 + + 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..bed1a1b3af --- /dev/null +++ b/resources/qml/Widgets/ComboBox.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 + + +// +// ComboBox with Cura styling. +// +ComboBox +{ + id: control + property bool highlighted: false + background: Rectangle + { + color: + { + if (!enabled) + { + return UM.Theme.getColor("setting_control_disabled") + } + + if (control.hovered || control.activeFocus || control.highlighted) + { + 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 || control.highlighted) + { + 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 + { + 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/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 875812f950..2ca7c0b6d7 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 = 9 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..9623551128 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 = 9 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..bbcdfa97aa 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 = 9 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..4147d60e1c 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 = 9 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..5783b20b31 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 = 9 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..39e115d3da 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 = 9 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..a594a764c7 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 = 9 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..2779bd53f3 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 = 9 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..a4ea654594 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 = 9 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..fa6862885b 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 = 9 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..43a3548526 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 = 9 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..2b38d44054 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 = 9 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..a3b11b1e91 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 = 9 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..b4b3681802 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 = 9 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..c084e52c9e 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 = 9 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..ab53c04167 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 = 9 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..7521270faa 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 = 9 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..7158673a3f 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 = 9 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..b0e80ce9ee 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 = 9 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..6502ad1d70 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 = 9 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..7882d7958a 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 = 9 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..d012aa332c 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 = 9 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..451a52b3f7 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 = 9 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..3ebbcfd64e 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 = 9 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 index 6011fdbb32..13dc0f8600 100644 --- a/resources/quality/anycubic_chiron/anycubic_chiron_draft.inst.cfg +++ b/resources/quality/anycubic_chiron/anycubic_chiron_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_chiron [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_chiron/anycubic_chiron_high.inst.cfg b/resources/quality/anycubic_chiron/anycubic_chiron_high.inst.cfg index 93561d9956..48fa2bc2e7 100644 --- a/resources/quality/anycubic_chiron/anycubic_chiron_high.inst.cfg +++ b/resources/quality/anycubic_chiron/anycubic_chiron_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_chiron [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_chiron/anycubic_chiron_normal.inst.cfg b/resources/quality/anycubic_chiron/anycubic_chiron_normal.inst.cfg index d1496ff187..b02480505c 100644 --- a/resources/quality/anycubic_chiron/anycubic_chiron_normal.inst.cfg +++ b/resources/quality/anycubic_chiron/anycubic_chiron_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_chiron [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 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..eed1cbffe9 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 = 9 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..82317f6bb4 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 = 9 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..866891ea85 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 = 9 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..49e2aeb145 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 = 9 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..15ce598763 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 = 9 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..e9a69ac6ff 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 = 9 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..474a98dc18 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 = 9 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..c1ae131dbc 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 = 9 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..3e8ca2b314 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 = 9 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..af127370d1 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 = 9 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..bfae50684f 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 = 9 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..db31cf210d 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 = 9 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..14144796cb 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 = 9 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..54d015f5a3 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 = 9 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..d922092f5b 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 = 9 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..35e2239b1d 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 = 9 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..0d53bb78f5 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 = 9 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..30fa35fc5f 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 = 9 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..d89cb9ee0d 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 = 9 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..c55028e720 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 = 9 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..b3b376557e 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 = 9 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..ec0ebfe2e0 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 = 9 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..7fb32a60e0 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 = 9 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..36def6424b 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 = 9 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..8145cf1b22 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 = 9 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..e0d0478176 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 = 9 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..9a88468b1e 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 = 9 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..7b26e214ea 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 = 9 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..62e7f4434f 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 = 9 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..40f0cc7afd 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 = 9 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..b6c345df82 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 = 9 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..61c9f5ca83 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 = 9 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..e85786a130 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 = 9 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..bcc8e0846e 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 = 9 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..e49859f0af 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 = 9 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..0324fc1e1a 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 = 9 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..aee9c45898 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 = 9 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..86ce246b86 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 = 9 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..bccaa9c3f1 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 = 9 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..75caa2bac9 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 = 9 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..72d1bd42bc 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 = 9 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..fa270fc75e 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 = 9 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..6c2dfba7c1 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 = 9 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..f097fa2bfa 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 = 9 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..9378ad27d2 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 = 9 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..bd6bfd1d2b 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 = 9 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..d0e760cfb7 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 = 9 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..093d13f519 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 = 9 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..639dd5de2d 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 = 9 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..8203c00403 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 = 9 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..ffb0326274 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 = 9 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..8085eb713e 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 = 9 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..070d80df41 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 = 9 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..a6f9618621 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 = 9 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..0fde39c50f 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 = 9 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..539bf2db1c 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 = 9 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..a762d4c202 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 = 9 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..b3d8f45432 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 = 9 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..68c0a0b912 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 = 9 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..a8e2430287 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 = 9 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..da853b248b 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 = 9 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..acfe3be51d 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 = 9 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..fd6310cb54 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 = 9 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..5cbf7947d6 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 = 9 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..e3cc50a79a 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 = 9 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..fc4bdab4ac 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 = 9 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..466431b4ca 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 = 9 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..a589cc595e 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 = 9 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..274bd91b81 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 = 9 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..8cf24dd647 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 = 9 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..24400a2cc9 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 = 9 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..1972a2f53a 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 = 9 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..f30fa5e1a4 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 = 9 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..cc4198e0bd 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 = 9 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..af2d18dd04 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 = 9 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..7101f93035 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 = 9 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..4c819fe22b 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 = 9 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..3a041bfff1 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 = 9 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..483b40ac2e 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 = 9 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..73a1a22b26 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 = 9 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..ac26639ccd 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 = 9 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..8708ebf478 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 = 9 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..c749b5916c 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 = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index 3f5e3f47ce..9421d321a9 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 = 9 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..0d9df28874 --- /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 = 9 +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..281c5da5c5 --- /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 = 9 +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..4d797a3f4d --- /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 = 9 +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..07edee6785 --- /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 = 9 +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..fae4d02aa0 --- /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 = 9 +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..dae6ebd759 --- /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 = 9 +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..99a4e8356b --- /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 = 9 +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..7fa4a6a1ea --- /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 = 9 +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..219a345608 --- /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 = 9 +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..6876e65168 --- /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 = 9 +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..d715d56cbc --- /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 = 9 +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..b5ba1504c4 --- /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 = 9 +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..2d3ff53fc3 --- /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 = 9 +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..c0eb63514b --- /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 = 9 +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..9bfaf8895e --- /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 = 9 +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..ab940a2526 --- /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 = 9 +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..53978da83f --- /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 = 9 +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..1b7254bd2f --- /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 = 9 +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..9e034e8cca --- /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 = 9 +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..4852bf69a6 --- /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 = 9 +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..2bfde0efa9 --- /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 = 9 +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..520275a0f5 --- /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 = 9 +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..89bdccd629 --- /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 = 9 +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..055b848cd3 --- /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 = 9 +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..f52aa88990 --- /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 = 9 +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..6849aa5a13 --- /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 = 9 +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..2783001e7b --- /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 = 9 +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..7cbacaf204 --- /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 = 9 +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..b6635e6ff6 --- /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 = 9 +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..944d51bdd2 --- /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 = 9 +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..43def887b2 --- /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 = 9 +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..99d45f4876 --- /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 = 9 +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..436a879a1c --- /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 = 9 +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..acdc698d35 --- /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 = 9 +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..97a9b538f0 --- /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 = 9 +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..789f77a99a --- /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 = 9 +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..1fdfef8207 --- /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 = 9 +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..a9badeaef6 --- /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 = 9 +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..03c2793dee --- /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 = 9 +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..7c60e021a1 --- /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 = 9 +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..4a5ca2d240 --- /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 = 9 +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..d01d1f1278 --- /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 = 9 +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..d9686737d6 --- /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 = 9 +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..c3e616189c --- /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 = 9 +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..68d503a42e --- /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 = 9 +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..ea37a110b7 --- /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 = 9 +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..074435a1c4 --- /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 = 9 +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..8166732cfe --- /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 = 9 +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..de5cc38668 --- /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 = 9 +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..4ed89a6a9b --- /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 = 9 +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..add52cbc4b --- /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 = 9 +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..387875783a --- /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 = 9 +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..0584060a13 --- /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 = 9 +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..7def6c01bb --- /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 = 9 +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..02089f67e3 --- /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 = 9 +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..3f3ad9b04f --- /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 = 9 +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..39e49a0860 --- /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 = 9 +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..95a3614d64 --- /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 = 9 +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..a8f1d1de33 --- /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 = 9 +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..78518402fa --- /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 = 9 +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..c717e9a965 --- /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 = 9 +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..0f255362a2 --- /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 = 9 +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..20a7a9c5f1 --- /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 = 9 +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..d0fd7efa50 --- /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 = 9 +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..60a1a3aff4 --- /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 = 9 +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..28a4584aed --- /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 = 9 +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..9a1e46ec4b --- /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 = 9 +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..b028efad1f --- /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 = 9 +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..ad6baa215e --- /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 = 9 +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..c16c810f20 --- /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 = 9 +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..a8b374e289 --- /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 = 9 +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..cc8e2783d4 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 = 9 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..bf91cf5acc 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 = 9 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..0f628f0556 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 = 9 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..0b56f82a33 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 = 9 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..b85ed05034 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 = 9 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..1245e8a9b0 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 = 9 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..dbbb076b77 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 = 9 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..7cc4a03c31 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 = 9 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..bb11395237 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 = 9 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..617b001154 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 = 9 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..93894e1c29 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 = 9 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..8c536f6d43 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 = 9 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 index 3defed4dbc..a0f3a96176 100755 --- 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 = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg index bcbeba5964..bba51d78b7 100755 --- 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 = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg index d4b9185108..2035282415 100755 --- a/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg index 843176f4a1..188fe95fa1 100755 --- 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 = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg index 5035bad786..feda2686af 100755 --- 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 = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg index 6f63b0f5b4..39151cb3c5 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 = 9 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..a55b20247d 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 = 9 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 9b8c8080a2..c6e41e9f13 100755 --- a/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg index 7bd4591064..0d085013cd 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 = 9 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..38fb251367 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 = 9 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 index 003f312fa8..59ba1e4bb0 100644 --- a/resources/quality/deltacomb/deltacomb_petg_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_petg_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_petg_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Fast_Quality.inst.cfg index 6dbdb759d1..044ec574d6 100644 --- a/resources/quality/deltacomb/deltacomb_petg_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_petg_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_petg_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_High_Quality.inst.cfg index 275edfe4d1..4a790faa72 100644 --- a/resources/quality/deltacomb/deltacomb_petg_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_petg_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_petg_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Normal_Quality.inst.cfg index 5d746aad68..184958e807 100644 --- a/resources/quality/deltacomb/deltacomb_petg_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_petg_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_petg_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Verydraft_Quality.inst.cfg index 8dd0f1fbb6..3246c4c690 100644 --- a/resources/quality/deltacomb/deltacomb_petg_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_petg_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg index 9c966d726c..64a92f92c0 100755 --- 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 = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg index a1a1fde055..cf28144e18 100755 --- 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 = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg index 0872d6d0a2..626757c3a6 100755 --- a/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg index cae00671c4..e1754f53cd 100755 --- 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 = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg index c26cec5127..c8a58e412d 100755 --- 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 = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg index 5fcbd76229..7d471f2ae1 100755 --- a/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_tpu_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Fast_Quality.inst.cfg index 299d12ac00..f713578e81 100755 --- a/resources/quality/deltacomb/deltacomb_tpu_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_tpu_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_tpu_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_High_Quality.inst.cfg index 32b2aadd0b..0e261b9b86 100755 --- a/resources/quality/deltacomb/deltacomb_tpu_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_tpu_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_tpu_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Normal_Quality.inst.cfg index 880c35c14e..fde2e6474b 100755 --- a/resources/quality/deltacomb/deltacomb_tpu_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_tpu_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_tpu_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Verydraft_Quality.inst.cfg index 104df50eee..1a553d744e 100755 --- a/resources/quality/deltacomb/deltacomb_tpu_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_tpu_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 9fe798dfd4..6383f80278 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 = 9 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..27fc02e44f 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 = 9 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..8a89f1d7e1 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 = 9 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..62335375a6 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 = 9 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..2dccb4c78a 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 = 9 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..84d0f05e70 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 = 9 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..69ddd80c5c 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 = 9 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..f21aa081a8 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 = 9 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..0a88cea8ba 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 = 9 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..c10ab08d63 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 = 9 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..cfb0077d36 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 = 9 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..3c8368edb5 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 = 9 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..34edc97d5d 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 = 9 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..6525305b3d 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 = 9 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..9dbb57d404 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 = 9 material = generic_tpu quality_type = normal weight = 0 diff --git a/resources/quality/fast.inst.cfg b/resources/quality/fast.inst.cfg index d92eeb3ed2..ef70ea8cf0 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 = 9 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..81f21a988c 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 = 9 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..e48eb9ae38 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 = 9 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..4e2cf13d14 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 = 9 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..5b322f1625 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 = 9 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..02c24fd592 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 = 9 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..1a7791b62c 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 = 9 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..b961802830 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 = 9 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..6ba235c50c 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 = 9 type = quality quality_type = extra_course weight = -3 diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 8d306c9de4..32f6f9d303 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 = 9 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 index 9bdd52a6be..ba64a34080 100644 --- a/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg +++ b/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/hms434/hms434_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Extra_Coarse_Quality.inst.cfg index e997f8297f..5a8e69e28a 100644 --- a/resources/quality/hms434/hms434_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/hms434/hms434_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/hms434/hms434_global_High_Quality.inst.cfg b/resources/quality/hms434/hms434_global_High_Quality.inst.cfg index 4515c1199b..f1ec57356e 100644 --- a/resources/quality/hms434/hms434_global_High_Quality.inst.cfg +++ b/resources/quality/hms434/hms434_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/hms434/hms434_global_Normal_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Normal_Quality.inst.cfg index 931e8db9f0..be9f94467a 100644 --- a/resources/quality/hms434/hms434_global_Normal_Quality.inst.cfg +++ b/resources/quality/hms434/hms434_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/hms434/hms434_global_Super_Coarse_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Super_Coarse_Quality.inst.cfg index d6647df7a7..6fb5f5d269 100644 --- a/resources/quality/hms434/hms434_global_Super_Coarse_Quality.inst.cfg +++ b/resources/quality/hms434/hms434_global_Super_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Super Coarse definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = super coarse weight = -4 diff --git a/resources/quality/hms434/hms434_global_Ultra_Coarse_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Ultra_Coarse_Quality.inst.cfg index 5640ca21cc..e57b5847a5 100644 --- a/resources/quality/hms434/hms434_global_Ultra_Coarse_Quality.inst.cfg +++ b/resources/quality/hms434/hms434_global_Ultra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Coarse definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = ultra coarse weight = -4 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..c6487f8aa5 --- /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 = 8 +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..d625fb86db --- /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 = 8 +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..cb308dd5c2 --- /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 = 8 +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..1968297bf9 --- /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 = 8 +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..300036d1af --- /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 = 8 +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..20d6efbdc2 --- /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 = 8 +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..6ec63159d9 --- /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 = 8 +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..9601b2ed19 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 = 8 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..a99e2d656c 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 = 8 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..af86a797f7 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 = 8 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..3edc3bba17 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 = 8 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..e3e29c421f --- /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 = 9 +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..b9843f18e9 --- /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 = 9 +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..46e79a191d --- /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 = 9 +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..cde1df2fbc --- /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 = 9 +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..ec35ca9ec6 --- /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 = 9 +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..abc1bf4115 --- /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 = 9 +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..a16b3c94ac --- /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 = 9 +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..6c3df6024d --- /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 = 9 +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..68d5ad4e42 --- /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 = 9 +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..f40027b7c7 --- /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 = 9 +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..27a0ccd2f2 --- /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 = 9 +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 index 0283786190..43be7e92a0 100644 --- a/resources/quality/katihal/alya3dp_normal.inst.cfg +++ b/resources/quality/katihal/alya3dp_normal.inst.cfg @@ -44,7 +44,7 @@ support_top_distance = 0.15 support_z_distance = 0.25 support_bottom_distance = 0.15 support_brim_width = 6 -support_infill_rate = 15 +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 diff --git a/resources/quality/katihal/alyanx3dp_normal.inst.cfg b/resources/quality/katihal/alyanx3dp_normal.inst.cfg index ae01704c8b..e86a6a3255 100644 --- a/resources/quality/katihal/alyanx3dp_normal.inst.cfg +++ b/resources/quality/katihal/alyanx3dp_normal.inst.cfg @@ -44,7 +44,7 @@ support_top_distance = 0.15 support_z_distance = 0.25 support_bottom_distance = 0.15 support_brim_width = 6 -support_infill_rate = 15 +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 diff --git a/resources/quality/katihal/kupido_normal.inst.cfg b/resources/quality/katihal/kupido_normal.inst.cfg index 8e0dba6289..541eb93473 100644 --- a/resources/quality/katihal/kupido_normal.inst.cfg +++ b/resources/quality/katihal/kupido_normal.inst.cfg @@ -44,7 +44,7 @@ support_top_distance = 0.15 support_z_distance = 0.25 support_bottom_distance = 0.15 support_brim_width = 6 -support_infill_rate = 15 +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 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..14fcb0bb51 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 = 9 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..85f9da8623 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 = 9 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..68e18e08dc 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 = 9 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..1af16453d3 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 = 9 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..044a82b2ec 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 = 9 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..92de43f8b5 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 = 9 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..53f31364d5 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 = 9 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..2b0b33a502 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 = 9 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..609359774e 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 = 9 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..e3fa16be48 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 = 9 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..613f653d25 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 = 9 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..b7bc069f4a 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 = 9 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..823728f70d 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 = 9 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..5b0ae3fef7 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 = 9 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..91cef5bc9d 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 = 9 type = quality quality_type = fast weight = -1 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..b8e862362c 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 = 9 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..6671f81d70 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 = 9 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..b934f65a22 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 = 9 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..48884cbdc1 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 = 9 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..1b7459fe1b 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 = 9 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..ebd2f01faf 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 = 9 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..16b310bbdf 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 = 9 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..701f3e8831 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 = 9 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..fb05c245e0 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 = 9 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..be5328c48a 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 = 9 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..aef00ac069 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 = 9 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..3d101d3370 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 = 9 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..a0da95299d 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 = 9 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..8ced1ea9d2 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 = 9 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..0c4daaf4e9 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 = 9 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..41f9e7070f 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 = 9 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..3802d5a659 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 = 9 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..6c17331b26 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 = 9 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..302d82b922 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 = 9 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..82aa3a03df 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 = 9 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..a2f804454e 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 = 9 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..3843210efa 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 = 9 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..151dcbb90f 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 = 9 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..518f90ed5a 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 = 9 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..aa4960f413 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 = 9 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..7990ce5b52 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 = 9 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..58b1a63d0a 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 = 9 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..af8ed66005 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 = 9 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..299ff39d4f 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 = 9 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..e44ea7afab 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 = 9 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..4424cd046c 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 = 9 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..487248f5d1 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 = 9 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..aa9cae9e68 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 = 9 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..6ff65500c0 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 = 9 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..c80526b130 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 = 9 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..ae73f0f486 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 = 9 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..0381f10f30 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 = 9 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..64753f31bc 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 = 9 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..d406a1a940 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 = 9 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..bd52990afb 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 = 9 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..5978bcf77c 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 = 9 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..edda3ca5a4 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 = 9 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..1e6754dde3 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 = 9 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..138e1af7f2 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 = 9 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..c82ac1a84e 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 = 9 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..7f69af7485 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 = 9 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..65ca72e91d 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 = 9 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..3a40d52ee9 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 = 9 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..e204b3c4ba 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 = 9 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..036edddbe8 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 = 9 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..0e51d209bf 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 = 9 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..bd6cf24330 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 = 9 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..7d8ede0b68 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 = 9 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..b561280140 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 = 9 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..65080eadce 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 = 9 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..ad0d21c1a9 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 = 9 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..30f9130f73 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 = 9 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..c4f822eda6 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 = 9 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..6232403d13 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 = 9 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..e21822e2ce 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 = 9 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..13667ce4ca 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 = 9 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..fb26970ca7 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 = 9 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..bdeec6b14f 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 = 9 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..7cff35e02a 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 = 9 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..e7ee01f721 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 = 9 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..1113a5697d 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 = 9 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..44c604ab3f 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 = 9 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..760e080e8f 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 = 9 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..1dba41d5b6 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 = 9 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..7a404d9dc2 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 = 9 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..daeb36e1a6 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 = 9 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..62d06c79db 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 = 9 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..c28f9f7512 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 = 9 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..7e44c68e4c 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 = 9 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..240e8d3246 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 = 9 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..949b3c23ce 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 = 9 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..99cb16b348 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 = 9 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..938482178c 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 = 9 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..a51342f350 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 = 9 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..de08b5d49a 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 = 9 type = quality material = generic_pla weight = 0 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index b8828f07e0..ced09abe89 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 = 9 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..d3df09871e --- /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 = 9 +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..566d375156 --- /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 = 9 +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..3661fcee06 --- /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 = 9 +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..7929fb8a46 --- /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 = 9 +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..0cd5c17d27 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 = 9 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..ae37eec499 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 = 9 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..530794f569 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 = 9 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..50b8b32f3c 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg index feb005e39c..b3dffcf059 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 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..d5fcfcc98e 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra High definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = extra_high weight = 0 diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index 2b951c6e4e..2a1ab44912 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index b965862a16..41fcfd67e6 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 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..5bce2647db --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_A.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = a +weight = 1 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.5 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +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 * 20/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 = 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..538a87c045 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = b +weight = 0 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.5 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +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 + 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..3184be82fd --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = c +weight = -1 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.5 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 65 +speed_wall = =math.ceil(speed_print * 45/65) +speed_wall_0 = =math.ceil(speed_wall * 35/45) +speed_topbottom = =math.ceil(speed_print * 40/65) +speed_layer_0 = =math.ceil(speed_print * 30/65) +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..f70131cd97 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_A.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = a +weight = 1 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +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 * 25/40) +speed_topbottom = =math.ceil(speed_print * 35/55) +speed_layer_0 = =math.ceil(speed_print * 20/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 = 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..e86f7e34ff --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = b +weight = 0 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +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 * 27/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 = 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..c03fb21cbe --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = c +weight = -1 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 65 +speed_wall = =math.ceil(speed_print * 45/65) +speed_wall_0 = =math.ceil(speed_wall * 30/45) +speed_topbottom = =math.ceil(speed_print * 40/65) +speed_layer_0 = =math.ceil(speed_print * 30/65) +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..29b655c91b --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_A.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = a +weight = 1 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.43 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +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 * 20/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 = 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..bf655b4944 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = b +weight = 0 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.43 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +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 = 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..fa81422998 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = c +weight = -1 +material = generic_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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.43 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 65 +speed_wall = =math.ceil(speed_print * 45/65) +speed_wall_0 = =math.ceil(speed_wall * 35/45) +speed_topbottom = =math.ceil(speed_print * 40/65) +speed_layer_0 = =math.ceil(speed_print * 30/65) +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..8fb7ba8ed5 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_A.inst.cfg @@ -0,0 +1,49 @@ + [general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..28ad37478e --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_B.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..544ba3b0bf --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..f86140b415 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_A.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..3036cbc215 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_B.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..dd2a2f0c94 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..39fb0ba390 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_A.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..3a6babd860 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_B.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..bd418bccd6 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +support_line_width = =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..896c44ea06 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_A.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 9 +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_x = =machine_nozzle_size/machine_nozzle_size*0.38 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +support_line_width = =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..7c8aa8553a --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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_x = =machine_nozzle_size/machine_nozzle_size*0.38 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +support_line_width = =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..e1fc3c9935 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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_x = =machine_nozzle_size/machine_nozzle_size*0.38 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +support_line_width = =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..c5a7407387 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = b +weight = 1 +material = generic_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.53 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +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..6f72a40983 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = c +weight = 0 +material = generic_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.53 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +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..4d23e09d72 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = d +weight = -1 +material = generic_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.53 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +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..698feba6d5 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.53 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 25/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 = 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..c3a1ff764a --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.53 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 27/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 = 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..3f2c6a8617 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +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.53 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 65 +speed_wall = =math.ceil(speed_print * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 3/4) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 30/65) +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..faf731cabd --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_Nylon-1030_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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_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.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..dc5afdb463 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = b +weight = 1 +material = generic_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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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 * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 0.5) +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..eacda2df9b --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = c +weight = 0 +material = generic_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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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 * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 0.5) +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..4a22a7de29 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = d +weight = -1 +material = generic_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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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 * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 0.5) +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..dd1de2b731 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = b +weight = 1 +material = generic_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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.47 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.45 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 0.5) +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..d359b712db --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = c +weight = 0 +material = generic_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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.47 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.45 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 0.5) +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..49dd435cb7 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +type = quality +quality_type = d +weight = -1 +material = generic_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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.47 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.53 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.45 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 65 +speed_wall = =math.ceil(speed_print * 3/4) +speed_wall_0 = =math.ceil(speed_wall * 2/3) +speed_topbottom = =math.ceil(speed_print * 2/3) +speed_layer_0 = =math.ceil(speed_print * 0.5) +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..1caddc5543 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_B.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..f4b98ed47c --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..ffe642001e --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_D.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..ecdcfa2b49 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_B.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..6d719613f1 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..a30598c298 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_D.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..95fc12cacb --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_B.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..190d73029a --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..53d2e8b1da --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_D.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +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.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =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..b80711fe8d --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_B.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 9 +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.59 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.49 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.54 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.54 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 35 +speed_wall = =math.ceil(speed_print * 4/4) +speed_wall_0 = =math.ceil(speed_wall * 3/4) +speed_topbottom = =math.ceil(speed_print * 2/3) +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..69db96ff85 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 9 +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.59 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.49 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.54 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.54 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 40 +speed_wall = =math.ceil(speed_print * 4/4) +speed_wall_0 = =math.ceil(speed_wall * 3/4) +speed_topbottom = =math.ceil(speed_print * 2/3) +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..a0a90933e2 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 9 +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.59 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.49 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.54 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.54 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 45 +speed_wall = =math.ceil(speed_print * 4/4) +speed_wall_0 = =math.ceil(speed_wall * 3/4) +speed_topbottom = =math.ceil(speed_print * 2/3) +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..8013c76be8 --- /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 = 9 +type = quality +quality_type = c +weight = 1 +material = generic_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..ca86b5fce6 --- /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 = 9 +type = quality +quality_type = d +weight = 0 +material = generic_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..92acfc67d8 --- /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 = 9 +type = quality +quality_type = e +weight = -1 +material = generic_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..6d81b07329 --- /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 = 9 +type = quality +quality_type = c +weight = 1 +material = generic_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..3ebe7fc050 --- /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 = 9 +type = quality +quality_type = d +weight = 0 +material = generic_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..3840c6414c --- /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 = 9 +type = quality +quality_type = e +weight = -1 +material = generic_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..9701fef992 --- /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 = 9 +type = quality +quality_type = c +weight = 1 +material = generic_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..7ed36d9d67 --- /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 = 9 +type = quality +quality_type = d +weight = 0 +material = generic_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..2d44c9d084 --- /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 = 9 +type = quality +quality_type = e +weight = -1 +material = generic_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..80e9934540 --- /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 = 9 +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..c597412185 --- /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 = 9 +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..def6799406 --- /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 = 9 +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..569188ff3c --- /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 = 9 +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..b83b16b3ff --- /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 = 9 +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..368cbf59f0 --- /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 = 9 +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..28bc40a7f7 --- /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 = 9 +type = quality +quality_type = h +weight = -1 +material = generic_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..36765ea8cf --- /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 = 9 +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..afb61bb3b3 --- /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 = 9 +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..a0db1a5af4 --- /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 = 9 +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..3d52f5d331 --- /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 = 9 +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..d3ce741a0d --- /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 = 9 +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..842e579f73 --- /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 = 9 +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..a5dcd8c000 --- /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 = 9 +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..273ab89ba9 --- /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 = 9 +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..47524c598f 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index 0dff2b94ca..8e343cee1b 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index e5b9290cad..7a357f52e6 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 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..83ac9ec272 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 = 9 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..5219e96d29 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 = 9 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..816ef254a8 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 = 9 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..c0eb46043c 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 = 9 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..423e309953 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 = 9 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..d76ef22999 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 = 9 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..f9633339b1 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 = 9 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..882d0c70f7 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 = 9 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..086e3128f9 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 = 9 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..9e8fff9320 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 = 9 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 83% 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..5dc2810b2c 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 = 9 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..f392c387b3 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 = 9 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..db8f07520a 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 = 9 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..b9dc375d5c --- /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 = 7 +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..1d6b876e7c --- /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 = 7 +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..b43df0dd6d --- /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 = 7 +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..91b3fd4af8 --- /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 = 7 +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..a2163b4b9c --- /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 = 7 +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..5d20e723f5 --- /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 = 7 +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..0bce28b960 --- /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 = 7 +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..7df01e2780 --- /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 = 7 +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..23373fe772 --- /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 = 7 +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..33b77ad3a5 --- /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 = 7 +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..b3729e0768 --- /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 = 7 +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..78777e60b8 --- /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 = 7 +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..d8f8581f2c --- /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 = 7 +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..1ccbc7a6b8 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 = 9 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..3b07d8a368 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 = 9 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..49bc34f08d 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 = 9 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..7183af5988 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 = 9 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..3b8112a811 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 = 9 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..4d03dffbde 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 = 9 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..859a323e5c 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 = 9 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..280b15f6c4 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 = 9 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..33c07215f8 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 = 9 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..0c508a3f08 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 = 9 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..21dddc3464 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 = 9 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..63165e7273 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 = 9 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..84b97a64f8 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 = 9 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..0cb8a48a4c 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 = 9 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..a9eecdd2d0 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 = 9 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..0f29add9a6 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 = 9 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..ebe60424c5 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 = 9 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..def2c9f040 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 = 9 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..84e900cfb2 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 = 9 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..c3c39e5583 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 = 9 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..3609c38e36 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 = 9 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..21c1fa40e9 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 = 9 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..4bf94b62c7 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 = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_coarse.inst.cfg deleted file mode 100644 index 4317e7796e..0000000000 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_coarse.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = coarse -weight = -3 -material = generic_pla -variant = 0.8mm - -[values] 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..9fd80a1cf2 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 = 9 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..1f8446eddf 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 = 9 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..5c54c953f0 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 = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_coarse.inst.cfg deleted file mode 100644 index 972c16c777..0000000000 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_coarse.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = coarse -weight = -3 -material = generic_pla -variant = 1.0mm - -[values] 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/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..665bc386d8 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 9 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.2mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..267fba612a --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 9 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.3mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..e694648f8b --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 9 +type = quality +quality_type = high +weight = 1 +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..86c8285f3c 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 = 9 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 67% 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..3a7bc21add 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 = 9 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/petg/tizyx_evy_1.0_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_high.inst.cfg similarity index 77% 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.5_pla_bois_high.inst.cfg index 250b3be05d..653bcc6025 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.5_pla_bois_high.inst.cfg @@ -8,8 +8,7 @@ setting_version = 7 type = quality quality_type = high weight = 1 -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_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..069c4f294a 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 = 9 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..748fb91ef6 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 = 9 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/tizyx_evy_1.0_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_high.inst.cfg similarity index 77% 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.6_pla_bois_high.inst.cfg index 18ea58c1a8..4070bebb23 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.6_pla_bois_high.inst.cfg @@ -8,7 +8,7 @@ setting_version = 7 type = quality quality_type = high weight = 1 -material = generic_pla -variant = 1.0mm +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..a6e78ed4d0 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 = 9 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 56% 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..a3fdb5af86 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 = 9 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/abs/tizyx_evy_1.0_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_high.inst.cfg similarity index 77% 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.8_pla_bois_high.inst.cfg index 001e03a182..9dc8af8161 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.8_pla_bois_high.inst.cfg @@ -8,8 +8,7 @@ setting_version = 7 type = quality quality_type = high weight = 1 -material = generic_abs -variant = 1.0mm +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..fa0ef9e6ec 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 = 9 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..b454801a5d 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 = 9 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..dc759418d6 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 = 9 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..c07ffc43ba 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 = 9 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..1337dd5e6a 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 = 9 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 index 0f1f26af8b..a86c15ef18 100644 --- 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 @@ -4,7 +4,7 @@ name = High definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 @@ -25,18 +25,16 @@ prime_tower_flow = 100 prime_tower_min_volume = 80 prime_tower_wipe_enabled = False retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_hop_enabled = True retraction_hop_only_when_collides = False retraction_min_travel = 2 -retraction_speed = 30 skin_angles = [] skirt_line_count = 2 speed_print = 60 speed_topbottom = 50 speed_wall_0 = 40 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 top_layers = 4 -wall_line_count = 2 \ No newline at end of file +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 index 8c124c55dd..ce36003c4a 100644 --- 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 @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 @@ -25,18 +25,16 @@ prime_tower_flow = 100 prime_tower_min_volume = 80 prime_tower_wipe_enabled = False retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_hop_enabled = True retraction_hop_only_when_collides = False retraction_min_travel = 2 -retraction_speed = 30 skin_angles = [] skirt_line_count = 2 speed_print = 60 speed_topbottom = 50 speed_wall_0 = 40 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 top_layers = 4 -wall_line_count = 2 \ No newline at end of file +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 index 937d35e1c3..2414be591b 100644 --- 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 @@ -4,7 +4,7 @@ name = High definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 @@ -21,12 +21,10 @@ prime_tower_flow = 110 prime_tower_min_volume = 50 prime_tower_wipe_enabled = True retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_extra_prime_amount = 0 retraction_hop_enabled = True retraction_hop_only_when_collides = False -retraction_speed = 30 skirt_brim_minimal_length = 100 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 \ No newline at end of file +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 index 1876e4188f..eb5ddb9234 100644 --- 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 @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 @@ -21,12 +21,10 @@ prime_tower_flow = 110 prime_tower_min_volume = 50 prime_tower_wipe_enabled = True retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_extra_prime_amount = 0 retraction_hop_enabled = True retraction_hop_only_when_collides = False -retraction_speed = 30 skirt_brim_minimal_length = 100 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 \ No newline at end of file +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..6cd279dae0 --- /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 = 7 +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..35525ef307 --- /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 = 7 +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..ac2d2fe4f1 --- /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 = 7 +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..dd66277727 --- /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 = 7 +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 index 7f15b3428e..efe3f70e6e 100644 --- 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 @@ -4,7 +4,7 @@ name = High definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 @@ -25,18 +25,16 @@ prime_tower_flow = 100 prime_tower_min_volume = 80 prime_tower_wipe_enabled = False retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_hop_enabled = True retraction_hop_only_when_collides = False retraction_min_travel = 2 -retraction_speed = 30 skin_angles = [] skirt_line_count = 2 speed_print = 60 speed_topbottom = 50 speed_wall_0 = 40 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 top_layers = 4 -wall_line_count = 2 \ No newline at end of file +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 index 8d500dbb49..9df30cb367 100644 --- 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 @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 @@ -25,18 +25,16 @@ prime_tower_flow = 100 prime_tower_min_volume = 80 prime_tower_wipe_enabled = False retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_hop_enabled = True retraction_hop_only_when_collides = False retraction_min_travel = 2 -retraction_speed = 30 skin_angles = [] skirt_line_count = 2 speed_print = 60 speed_topbottom = 50 speed_wall_0 = 40 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 top_layers = 4 -wall_line_count = 2 \ No newline at end of file +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 index 6ca3a99f5b..392e5a5675 100644 --- 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 @@ -4,7 +4,7 @@ name = High definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 @@ -21,12 +21,10 @@ prime_tower_flow = 110 prime_tower_min_volume = 50 prime_tower_wipe_enabled = True retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_extra_prime_amount = 0 retraction_hop_enabled = True retraction_hop_only_when_collides = False -retraction_speed = 30 skirt_brim_minimal_length = 100 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 \ No newline at end of file +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 index 1356fdcf2e..be28af0c05 100644 --- 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 @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 @@ -21,12 +21,10 @@ prime_tower_flow = 110 prime_tower_min_volume = 50 prime_tower_wipe_enabled = True retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_extra_prime_amount = 0 retraction_hop_enabled = True retraction_hop_only_when_collides = False -retraction_speed = 30 skirt_brim_minimal_length = 100 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 \ No newline at end of file +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 index a90290c052..05d8b25bbd 100644 --- 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 @@ -4,7 +4,7 @@ name = Flex and PLA definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 @@ -25,18 +25,16 @@ prime_tower_flow = 100 prime_tower_min_volume = 80 prime_tower_wipe_enabled = False retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_hop_enabled = True retraction_hop_only_when_collides = False retraction_min_travel = 2 -retraction_speed = 30 skin_angles = [] skirt_line_count = 2 speed_print = 60 speed_topbottom = 50 speed_wall_0 = 40 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 top_layers = 4 -wall_line_count = 2 \ No newline at end of file +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_flex_only.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex_only.inst.cfg index fde4138322..ccb384568d 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex_only.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex_only.inst.cfg @@ -4,7 +4,7 @@ name = Flex Only definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = coarse weight = -3 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 index 7890aa4744..ecbddfd8b7 100644 --- 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 @@ -4,7 +4,7 @@ name = High definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 @@ -25,18 +25,16 @@ prime_tower_flow = 100 prime_tower_min_volume = 80 prime_tower_wipe_enabled = False retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_hop_enabled = True retraction_hop_only_when_collides = False retraction_min_travel = 2 -retraction_speed = 30 skin_angles = [] skirt_line_count = 2 speed_print = 60 speed_topbottom = 50 speed_wall_0 = 40 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 top_layers = 4 -wall_line_count = 2 \ No newline at end of file +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 index 2088da4363..09b6402b55 100644 --- 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 @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 @@ -25,18 +25,16 @@ prime_tower_flow = 100 prime_tower_min_volume = 80 prime_tower_wipe_enabled = False retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_hop_enabled = True retraction_hop_only_when_collides = False retraction_min_travel = 2 -retraction_speed = 30 skin_angles = [] skirt_line_count = 2 speed_print = 60 speed_topbottom = 50 speed_wall_0 = 40 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 top_layers = 4 -wall_line_count = 2 \ No newline at end of file +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..791bbed462 --- /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 = 7 +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 index 42520b06e1..0d5b0891a6 100644 --- 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 @@ -4,7 +4,7 @@ name = Flex and PLA definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 @@ -21,13 +21,11 @@ prime_tower_flow = 110 prime_tower_min_volume = 50 prime_tower_wipe_enabled = True retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_extra_prime_amount = 0 retraction_hop_enabled = True retraction_hop_only_when_collides = False -retraction_speed = 30 speed_print = 30 skirt_brim_minimal_length = 100 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 \ No newline at end of file +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_flex_only.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex_only.inst.cfg index 4c8c8e7f57..dd59bbc714 100644 --- a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex_only.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex_only.inst.cfg @@ -4,7 +4,7 @@ name = Flex Only definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = coarse weight = -3 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 index af3db653db..d0a0ebd93e 100644 --- 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 @@ -4,7 +4,7 @@ name = High definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 @@ -21,12 +21,10 @@ prime_tower_flow = 110 prime_tower_min_volume = 50 prime_tower_wipe_enabled = True retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_extra_prime_amount = 0 retraction_hop_enabled = True retraction_hop_only_when_collides = False -retraction_speed = 30 skirt_brim_minimal_length = 100 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 \ No newline at end of file +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 index d119879e80..c7c1f97868 100644 --- 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 @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 @@ -21,12 +21,10 @@ prime_tower_flow = 110 prime_tower_min_volume = 50 prime_tower_wipe_enabled = True retract_at_layer_change = True -retraction_amount = 2.5 retraction_enable = True retraction_extra_prime_amount = 0 retraction_hop_enabled = True retraction_hop_only_when_collides = False -retraction_speed = 30 skirt_brim_minimal_length = 100 -switch_extruder_retraction_amount = 0 -switch_extruder_retraction_speeds = 40 \ No newline at end of file +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..e9986eb2fd --- /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 = 7 +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..198f2403a3 --- /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 = 7 +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..bc07b48393 --- /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 = 7 +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..5c1fe91ca3 --- /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 = 7 +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..6152b0377e --- /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 = 7 +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..cadd4eb584 --- /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 = 7 +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..3ba5b74e13 --- /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 = 7 +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..a9433d33c0 --- /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 = 7 +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..b9002fa1b3 --- /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 = 7 +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 index 9dd69c246a..5fe7ca919d 100644 --- 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 @@ -4,7 +4,7 @@ name = Flex Only definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = coarse weight = -3 @@ -19,12 +19,21 @@ skirt_line_count = 2 skirt_gap = 2 fill_outline_gaps = True infill_sparse_density = 15 -retraction_amount = 2.5 retraction_min_travel = 2 -retraction_speed = 30 speed_print = 30 speed_topbottom = 50 speed_wall_0 = 40 top_layers = 4 wall_line_count = 2 -cool_min_layer_time = 11 \ No newline at end of file +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 index f2e8e574b6..131e30dc2c 100644 --- 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 @@ -4,7 +4,7 @@ name = Flex and PLA definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 @@ -15,8 +15,15 @@ adhesion_extruder_nr = 0 adhesion_type = skirt layer_height = 0.2 layer_height_0 = 0.25 -prime_tower_circular = True prime_tower_enable = True -prime_tower_position_x = 180 -prime_tower_position_y = 180 -prime_tower_size = 29 +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 index 1abaff2a06..7e8bb6cded 100644 --- 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 @@ -4,7 +4,7 @@ name = High definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 @@ -15,8 +15,39 @@ adhesion_extruder_nr = 0 adhesion_type = skirt layer_height = 0.1 layer_height_0 = 0.1 -prime_tower_circular = True prime_tower_enable = True -prime_tower_position_x = 180 -prime_tower_position_y = 180 -prime_tower_size = 29 +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 index 143589f53c..616717008c 100644 --- 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 @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 @@ -15,8 +15,39 @@ adhesion_extruder_nr = 0 adhesion_type = skirt layer_height = 0.2 layer_height_0 = 0.25 -prime_tower_circular = True prime_tower_enable = True -prime_tower_position_x = 180 -prime_tower_position_y = 180 -prime_tower_size = 29 +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..298f94deb9 --- /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 = 7 +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..d7600f847b --- /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 = 7 +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..b93f2fb1b2 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 +name = Normal definition = tizyx_k25 [metadata] quality_type = normal -setting_version = 7 +setting_version = 9 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_amount = 2.5 retraction_min_travel = 2 -retraction_speed = 30 speed_print = 60 -speed_topbottom = 50 -speed_wall_0 = 40 -top_layers = 4 +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 -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 +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..3a9315d2b0 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 = 9 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..be71e79f21 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 = 9 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..e0b962365a 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 = 9 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..f5ebe09cc9 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 = 9 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..904b7717a9 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 = 9 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..54bcb0e820 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 = 9 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..7351f481ff 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 = 9 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..ca99d9cb70 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 = 9 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..ad7a8486c4 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 = 9 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..1c03350940 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 = 9 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..6ec591f7d3 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 = 9 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..bf4ffd0ddd 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 = 9 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 7269389352..9676a5d9c6 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 = 9 type = quality quality_type = high weight = 1 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..b4057c5163 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 = 9 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..d1e75bf63c 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 = 9 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..e1ec57db9d 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 = 9 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..ee531a6010 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 = 9 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 a545dd9217..da1d5c061f 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 = 9 type = quality quality_type = fast weight = -1 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 50b066bfbd..8319b00199 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 = 9 type = quality quality_type = high weight = 1 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..b67b75fa8b 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 = 9 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..1a5958a844 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 = 9 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..210566c967 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 = 9 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..984f82f484 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 = 9 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..ea19bd0da5 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 = 9 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..07ad20c568 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 = 9 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..a1a58e4c94 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 = 9 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..d3940b42bf 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 = 9 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..11e9baedc5 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 = 9 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..484ecbdc3d 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 = 9 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..b8e4f3920d 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 = 9 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..84c537e026 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 = 9 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..d71185bf6d 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 = 9 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..65bdbd53da 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 = 9 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..118bad3a2e 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 = 9 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 02de795579..eb85e5352f 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 = 7 +setting_version = 9 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 77e9190e34..d69ace8ade 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 = 9 type = quality quality_type = high weight = 1 @@ -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.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index f227afc3e9..7f6e500b8e 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 = 9 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 aead6798d7..29fa32fd8c 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 = 9 type = quality quality_type = draft weight = -1 @@ -34,7 +34,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.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index fd4f6c0513..627e9fe4c5 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 = 9 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 87e17888ee..55f0b56f19 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 = 9 type = quality quality_type = slightlycoarse weight = -1 @@ -38,7 +38,7 @@ 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 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..4fe20aff63 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 = 9 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..b1d5f45802 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 = 9 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..d7f8426e4b 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 = 9 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..5f1128d8f3 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 = 9 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..02d8af13a1 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 = 9 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 1824277db4..73d6e5b906 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 = 9 type = quality quality_type = draft weight = -1 @@ -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.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index 43b6363236..1b033c5452 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 = 9 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 2b339869a2..292820ac2f 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 = 9 type = quality quality_type = slightlycoarse weight = -1 @@ -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.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index dce492e90b..fb9e8b9186 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 = 9 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..16fe3acbf9 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 = 9 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..814fa8aa90 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 = 9 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 595ee79135..0ca13860a1 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 = 9 type = quality quality_type = fast weight = -1 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..1b94a84263 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 = 9 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..f8736a57ef 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 = 9 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 614bfbafcd..6c9601f83c 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 = 9 type = quality quality_type = fast weight = -1 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..cb9324a8bc 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 = 9 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..c171538e81 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 = 9 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 d09e135c45..ad36195c46 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 = 9 type = quality quality_type = high weight = 1 @@ -35,7 +35,7 @@ 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 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..1ca9cf3986 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 = 9 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 123e103732..a325f9c19b 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 = 9 type = quality quality_type = fast weight = -1 @@ -37,7 +37,7 @@ 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 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..29376b44bd 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 = 9 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..1e7f093e99 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 = 9 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..388560565b 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 = 9 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..45f69966fb 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 = 9 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..18bcf7dda2 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 = 9 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..955dfe762e 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 = 9 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..1b1e2eb6e2 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 = 9 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..3bbd48ef7a 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 = 9 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..5e19a029c8 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 = 9 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..4698f39137 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 = 9 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..81855408da 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 = 9 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..48b62db6da 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 = 9 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..62f189d7e8 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 = 9 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..b5be92f483 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 = 9 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..5844ea869c 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 = 9 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..9746160ed0 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 = 9 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..c67ae2b1b7 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 = 9 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..1396cbd999 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 = 9 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..b50a47a541 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 = 9 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..dbd0959dba 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 = 9 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..e4bac861aa 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 = 9 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..f87342ebaf 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 = 9 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..6627ca84c5 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 = 9 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..bd8d07372d 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 = 9 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..d55b81bbfd 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 = 9 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..bd0e2992ba 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 = 9 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..3b00f6f734 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 = 9 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..37f32031d1 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 = 9 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..89c61cd46d 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 = 9 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..16e82835cd 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 = 9 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..eb91e8b510 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 = 9 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..c88f90d9ac 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 = 9 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..f3ccc5be03 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 = 9 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..a99cc80fb0 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 = 9 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..c82f6bd352 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 = 9 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..f7a61111d3 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 = 9 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..a3273ae754 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 = 9 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..62ac3d8431 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 = 9 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..193a7486c3 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 = 9 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..00d075dcca 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 = 9 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..bdd6f1b783 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 = 9 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..a36d6610ca 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 = 9 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..f188a539f7 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 = 9 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..f604198f35 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 = 9 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..f39a988729 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 = 9 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..6f69ffe06d 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 = 9 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..ad76f0e0fb 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 = 9 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..042d192884 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 = 9 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..9deca9d86c 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 = 9 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..2e6c308ec5 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 = 9 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..d9e26a3457 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 = 9 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..34b75c2489 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 = 9 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..80c52719c4 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 = 9 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..47ec05541d 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 = 9 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..bc5b366d2b 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 = 9 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..571d7307e4 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 = 9 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..f1a329653d 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 = 9 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..bd4aabb31d 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 = 9 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..f6d6bc620b 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 = 9 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..61dfee972b 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 = 9 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..e197ff962e 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 = 9 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..a803521095 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 = 9 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..e7ea5cd3d5 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 = 9 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..f9011adf6e 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 = 9 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..c34b290829 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 = 9 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..c4e2b64222 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 = 9 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..f9a27a686f 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 = 9 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..a35d202b18 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 = 9 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..f79525f474 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 = 9 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..7c16dd48dc 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 = 9 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..68322afcac 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 = 9 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..6a3e774bdd 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 = 9 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..ba81b5eea5 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 = 9 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..ffcb251487 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 = 9 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..7455df0e00 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 = 9 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..c7f99d543f 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 = 9 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..a3abfb4da1 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 = 9 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..8d05bc1573 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 = 9 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..635cdd6bc4 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 = 9 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..2850b3b5b2 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 = 9 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..972c1226c0 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 = 9 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..420ac87f2b 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 = 9 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..901cb96c08 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 = 9 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..1cbfa37232 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 = 9 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..72d532927c 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 = 9 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..78d803d83e 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 = 9 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..56c32c3e61 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 = 9 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..1cac6cdff7 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 = 9 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..79bb37e301 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 = 9 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..3116222771 --- /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 = 9 +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..350985ef89 --- /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 = 9 +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..882bb06cd4 --- /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 = 9 +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..5e34121579 --- /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 = 9 +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..b216eac68a --- /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 = 9 +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..32c40c3787 --- /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 = 9 +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..bc04462e00 --- /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 = 9 +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_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg new file mode 100644 index 0000000000..7ffab11e22 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_abs +variant = AA 0.4 + +[values] +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = =default_material_print_temperature + 20 +material_initial_print_temperature = =material_print_temperature - 15 +material_final_print_temperature = =material_print_temperature - 20 +prime_tower_enable = False +skin_overlap = 20 +speed_print = 60 +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) +wall_thickness = 1 + +infill_line_width = =round(line_width * 0.4 / 0.35, 2) +speed_infill = =math.ceil(speed_print * 50 / 60) + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg new file mode 100644 index 0000000000..e5fd572624 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = fast +weight = -1 +material = generic_abs +variant = AA 0.4 + +[values] +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = =default_material_print_temperature + 15 +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 = =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_line_width = =round(line_width * 0.4 / 0.35, 2) +speed_infill = =math.ceil(speed_print * 45 / 60) + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg new file mode 100644 index 0000000000..8ec152171b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg @@ -0,0 +1,29 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = high +weight = 1 +material = generic_abs +variant = AA 0.4 + +[values] +cool_min_speed = 12 +machine_nozzle_cool_down_speed = 0.8 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = =default_material_print_temperature + 5 +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 = =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) + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..4f9a156b22 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -0,0 +1,27 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = normal +weight = 0 +material = generic_abs +variant = AA 0.4 + +[values] +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = =default_material_print_temperature + 10 +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 = =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) 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..98e79c0475 --- /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 = 9 +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..10b8791943 --- /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 = 9 +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..00c8f60b74 --- /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 = 9 +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_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg new file mode 100644 index 0000000000..4e6feee81a --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_cpe_plus +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +cool_fan_speed_max = 80 +cool_min_speed = 5 +infill_line_width = =round(line_width * 0.35 / 0.35, 2) +infill_overlap = 0 +infill_wipe_dist = 0 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =material_print_temperature +multiple_mesh_overlap = 0 +prime_tower_enable = True +prime_tower_wipe_enabled = True +retraction_combing_max_distance = 50 +retraction_extrusion_window = 1 +retraction_hop = 0.2 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) +speed_print = 50 +speed_topbottom = =math.ceil(speed_print * 40 / 50) + +speed_wall = =math.ceil(speed_print * 50 / 50) +speed_wall_0 = =math.ceil(speed_wall * 40 / 50) +support_bottom_distance = =support_z_distance +support_z_distance = =layer_height +wall_0_inset = 0 +wall_thickness = 1 + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg new file mode 100644 index 0000000000..49fcd51a8f --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -0,0 +1,46 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = fast +weight = -1 +material = generic_cpe_plus +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +cool_fan_speed_max = 80 +cool_min_speed = 6 +infill_line_width = =round(line_width * 0.35 / 0.35, 2) +infill_overlap = 0 +infill_wipe_dist = 0 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =material_print_temperature +multiple_mesh_overlap = 0 +prime_tower_enable = True +prime_tower_wipe_enabled = True +retraction_combing_max_distance = 50 +retraction_extrusion_window = 1 +retraction_hop = 0.2 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 20 +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 * 45 / 45) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +support_bottom_distance = =support_z_distance +support_z_distance = =layer_height +wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg new file mode 100644 index 0000000000..6e0408d82d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = high +weight = 1 +material = generic_cpe_plus +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +cool_fan_speed_max = 50 +cool_min_speed = 5 +infill_line_width = =round(line_width * 0.35 / 0.35, 2) +infill_overlap = 0 +infill_wipe_dist = 0 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =material_print_temperature +multiple_mesh_overlap = 0 +prime_tower_enable = True +prime_tower_wipe_enabled = True +retraction_combing_max_distance = 50 +retraction_extrusion_window = 1 +retraction_hop = 0.2 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) +speed_print = 40 +speed_topbottom = =math.ceil(speed_print * 30 / 35) + +speed_wall = =math.ceil(speed_print * 35 / 40) +speed_wall_0 = =math.ceil(speed_wall * 30 / 35) +support_bottom_distance = =support_z_distance +support_z_distance = =layer_height +wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..e24a84d32b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe_plus +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +cool_fan_speed_max = 50 +cool_min_speed = 7 +infill_line_width = =round(line_width * 0.35 / 0.35, 2) +infill_overlap = 0 +infill_wipe_dist = 0 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.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 +material_print_temperature_layer_0 = =material_print_temperature +multiple_mesh_overlap = 0 +prime_tower_enable = True +prime_tower_wipe_enabled = True +retraction_combing_max_distance = 50 +retraction_extrusion_window = 1 +retraction_hop = 0.2 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) +speed_print = 40 +speed_topbottom = =math.ceil(speed_print * 30 / 35) + +speed_wall = =math.ceil(speed_print * 35 / 40) +speed_wall_0 = =math.ceil(speed_wall * 30 / 35) +support_bottom_distance = =support_z_distance +support_z_distance = =layer_height +wall_0_inset = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg new file mode 100644 index 0000000000..284cef4107 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg @@ -0,0 +1,29 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_cpe +variant = AA 0.4 + +[values] +material_print_temperature = =default_material_print_temperature + 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +retraction_combing_max_distance = 50 +skin_overlap = 20 +speed_print = 60 +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) +wall_thickness = 1 + + +infill_pattern = triangles +speed_infill = =math.ceil(speed_print * 50 / 60) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg new file mode 100644 index 0000000000..487ad68099 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg @@ -0,0 +1,27 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = fast +weight = -1 +material = generic_cpe +variant = AA 0.4 + +[values] +cool_min_speed = 7 +material_print_temperature = =default_material_print_temperature + 5 +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 = =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) \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg new file mode 100644 index 0000000000..9de2de588e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg @@ -0,0 +1,28 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = high +weight = 1 +material = generic_cpe +variant = AA 0.4 + +[values] +cool_min_speed = 12 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_print_temperature = =default_material_print_temperature - 5 +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 = =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) \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..0cfa9778ff --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -0,0 +1,26 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe +variant = AA 0.4 + +[values] +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +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 = =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) \ 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..98ae2900f7 --- /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 = 9 +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..afe5c03f8e --- /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 = 9 +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..64a8dfe7cf --- /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 = 9 +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..3ee447eb2d --- /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 = 9 +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_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg new file mode 100644 index 0000000000..63985bfcd2 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_pc +variant = AA 0.4 + +[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 = 90 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 6 +infill_line_width = =round(line_width * 0.4 / 0.35, 2) +infill_overlap = 0 +infill_overlap_mm = 0.05 +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +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_extrusion_window = 1 +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 = =round(line_width * 0.4 / 0.35, 2) +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg new file mode 100644 index 0000000000..548cdbdb0d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = fast +weight = -1 +material = generic_pc +variant = AA 0.4 + +[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 = 85 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 7 +infill_line_width = =round(line_width * 0.4 / 0.35, 2) +infill_overlap_mm = 0.05 +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +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_extrusion_window = 1 +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 = =round(line_width * 0.4 / 0.35, 2) +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg new file mode 100644 index 0000000000..f840c296b4 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg @@ -0,0 +1,64 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = high +weight = 1 +material = generic_pc +variant = AA 0.4 + +[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 = 8 +infill_line_width = =round(line_width * 0.4 / 0.35, 2) +infill_overlap = 0 +infill_overlap_mm = 0.05 +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature - 10 +material_standby_temperature = 100 +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_extrusion_window = 1 +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 = =round(line_width * 0.4 / 0.35, 2) +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..c93903293e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg @@ -0,0 +1,62 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = normal +weight = 0 +material = generic_pc +variant = AA 0.4 + +[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 = =round(line_width * 0.4 / 0.35, 2) +infill_overlap = 0 +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_standby_temperature = 100 +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_extrusion_window = 1 +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 = =round(line_width * 0.4 / 0.35, 2) +wall_thickness = 1.2 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..1dfa09e923 --- /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 = 9 +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..1c2b49839e --- /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 = 9 +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..8863835f09 --- /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 = 9 +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..1cf0cbef92 --- /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 = 9 +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_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg new file mode 100644 index 0000000000..dc46520c97 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg @@ -0,0 +1,62 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_pp +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 20 +cool_fan_speed_max = 100 +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 7 +cool_min_speed = 2.5 +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = tetrahedral +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.85 +machine_nozzle_heat_up_speed = 1.5 +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 +material_print_temperature_layer_0 = =material_print_temperature + 5 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 18 +speed_equalize_flow_enabled = True +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 +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 +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.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg new file mode 100644 index 0000000000..fb047fc502 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg @@ -0,0 +1,64 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = fast +weight = -1 +material = generic_pp +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 20 +cool_fan_speed_max = 100 +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 7 +cool_min_speed = 2.5 +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = tetrahedral +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.85 +machine_nozzle_heat_up_speed = 1.5 +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 +material_print_temperature_layer_0 = =material_print_temperature + 3 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 18 +speed_equalize_flow_enabled = True +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 +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.1 +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.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..b49d3945d4 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg @@ -0,0 +1,64 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = normal +weight = 0 +material = generic_pp +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 20 +cool_fan_speed_max = 100 +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 7 +cool_min_speed = 2.5 +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = tetrahedral +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.85 +machine_nozzle_heat_up_speed = 1.5 +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 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 18 +speed_equalize_flow_enabled = True +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 +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 +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.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..c02c4c642d --- /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 = 9 +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..bf37d1dd4d --- /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 = 9 +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..6333124f22 --- /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 = 9 +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..9de9001f11 --- /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 = 9 +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..33a03d7d81 --- /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 = 9 +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..566a368dd4 --- /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 = 9 +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..fe37bfe94a --- /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 = 9 +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_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg new file mode 100644 index 0000000000..8e4b1415f9 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_abs +variant = AA 0.8 + +[values] +line_width = =machine_nozzle_size * 0.875 +material_print_temperature = =default_material_print_temperature + 20 +material_standby_temperature = 100 +speed_print = 50 +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..f4b1588f39 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = superdraft +weight = -4 +material = generic_abs +variant = AA 0.8 + +[values] +line_width = =machine_nozzle_size * 0.875 +material_print_temperature = =default_material_print_temperature + 25 +material_standby_temperature = 100 +speed_print = 50 +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..a303655ec5 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = verydraft +weight = -3 +material = generic_abs +variant = AA 0.8 + +[values] +line_width = =machine_nozzle_size * 0.875 +material_print_temperature = =default_material_print_temperature + 22 +material_standby_temperature = 100 +speed_print = 50 +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg new file mode 100644 index 0000000000..1465d5bb99 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -0,0 +1,39 @@ +[general] +version = 4 +name = Fast - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_cpe_plus +variant = AA 0.8 +is_experimental = True + +[values] +brim_width = 14 +cool_fan_full_at_height = =layer_height_0 + 14 * layer_height +infill_before_walls = True +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_print_temperature = =default_material_print_temperature - 10 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +prime_tower_enable = True +retraction_combing_max_distance = 50 +retraction_hop = 0.1 +retraction_hop_enabled = False +skin_overlap = 0 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) +speed_print = 50 +speed_slowdown_layers = 15 +speed_topbottom = =math.ceil(speed_print * 35 / 50) +speed_wall = =math.ceil(speed_print * 40 / 50) +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..18ba654a63 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -0,0 +1,39 @@ +[general] +version = 4 +name = Sprint - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = superdraft +weight = -4 +material = generic_cpe_plus +variant = AA 0.8 +is_experimental = True + +[values] +brim_width = 14 +cool_fan_full_at_height = =layer_height_0 + 7 * layer_height +infill_before_walls = True +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_print_temperature = =default_material_print_temperature - 5 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +prime_tower_enable = True +retraction_combing_max_distance = 50 +retraction_hop = 0.1 +retraction_hop_enabled = False +skin_overlap = 0 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) +speed_print = 50 +speed_slowdown_layers = 8 +speed_topbottom = =math.ceil(speed_print * 35 / 50) +speed_wall = =math.ceil(speed_print * 40 / 50) +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..8683d9f498 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -0,0 +1,39 @@ +[general] +version = 4 +name = Extra Fast - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = verydraft +weight = -3 +material = generic_cpe_plus +variant = AA 0.8 +is_experimental = True + +[values] +brim_width = 14 +cool_fan_full_at_height = =layer_height_0 + 9 * layer_height +infill_before_walls = True +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_print_temperature = =default_material_print_temperature - 7 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +prime_tower_enable = True +retraction_combing_max_distance = 50 +retraction_hop = 0.1 +retraction_hop_enabled = False +skin_overlap = 0 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) +speed_print = 50 +speed_slowdown_layers = 10 +speed_topbottom = =math.ceil(speed_print * 35 / 50) +speed_wall = =math.ceil(speed_print * 40 / 50) +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg new file mode 100644 index 0000000000..dabff34ce6 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_cpe +variant = AA 0.8 + +[values] +brim_width = 15 +line_width = =machine_nozzle_size * 0.875 +material_print_temperature = =default_material_print_temperature + 15 +material_standby_temperature = 100 +prime_tower_enable = True +retraction_combing_max_distance = 50 +speed_print = 40 +speed_topbottom = =math.ceil(speed_print * 25 / 40) +speed_wall = =math.ceil(speed_print * 30 / 40) + +jerk_travel = 50 \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..6371ce1337 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -0,0 +1,26 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = superdraft +weight = -4 +material = generic_cpe +variant = AA 0.8 + +[values] +brim_width = 15 +line_width = =machine_nozzle_size * 0.875 +material_print_temperature = =default_material_print_temperature + 20 +material_standby_temperature = 100 +prime_tower_enable = True +retraction_combing_max_distance = 50 +speed_print = 45 +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 \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..d3f5fb50be --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = verydraft +weight = -3 +material = generic_cpe +variant = AA 0.8 + +[values] +brim_width = 15 +line_width = =machine_nozzle_size * 0.875 +material_print_temperature = =default_material_print_temperature + 17 +material_standby_temperature = 100 +prime_tower_enable = True +retraction_combing_max_distance = 50 +speed_print = 40 +speed_topbottom = =math.ceil(speed_print * 25 / 40) +speed_wall = =math.ceil(speed_print * 30 / 40) + +jerk_travel = 50 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..b09f0f00df --- /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 = 9 +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..639ceb2348 --- /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 = 9 +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..6477e2d0a0 --- /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 = 9 +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_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg new file mode 100644 index 0000000000..d1d716858d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg @@ -0,0 +1,32 @@ +[general] +version = 4 +name = Fast - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_pc +variant = AA 0.8 +is_experimental = True + +[values] +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 +material_print_temperature = =default_material_print_temperature - 5 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +raft_airgap = 0.5 +raft_margin = 15 +skin_overlap = 0 +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) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..e6a742599b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Sprint - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = superdraft +weight = -4 +material = generic_pc +variant = AA 0.8 +is_experimental = True + +[values] +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 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +raft_airgap = 0.5 +raft_margin = 15 +skin_overlap = 0 +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) diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..01b63d5ac5 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -0,0 +1,32 @@ +[general] +version = 4 +name = Extra Fast - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = verydraft +weight = -3 +material = generic_pc +variant = AA 0.8 +is_experimental = True + +[values] +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 +material_print_temperature = =default_material_print_temperature - 2 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +raft_airgap = 0.5 +raft_margin = 15 +skin_overlap = 0 +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) 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..50acc663ab --- /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 = 9 +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..e4e6c1a75d --- /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 = 9 +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..005aaf3e04 --- /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 = 9 +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_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg new file mode 100644 index 0000000000..ea17ee7b2d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg @@ -0,0 +1,52 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = draft +weight = -2 +material = generic_pp +variant = AA 0.8 + +[values] +brim_width = 25 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 17 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = tetrahedral +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) +material_bed_temperature_layer_0 = =material_bed_temperature +material_print_temperature = =default_material_print_temperature - 2 +material_print_temperature_layer_0 = =default_material_print_temperature + 2 +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 +retraction_hop = 0.5 +retraction_min_travel = 1.5 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) + +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +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.6 +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..cce48c4d79 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -0,0 +1,52 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = superdraft +weight = -4 +material = generic_pp +variant = AA 0.8 + +[values] +brim_width = 25 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 17 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = tetrahedral +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) +material_bed_temperature_layer_0 = =material_bed_temperature +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =default_material_print_temperature + 2 +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 +retraction_hop = 0.5 +retraction_min_travel = 1.5 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) + +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +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.6 +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 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..9b7bfd217b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -0,0 +1,51 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 9 +type = quality +quality_type = verydraft +weight = -3 +material = generic_pp +variant = AA 0.8 + +[values] +brim_width = 25 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 17 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = tetrahedral +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) +material_bed_temperature_layer_0 = =material_bed_temperature +material_print_temperature_layer_0 = =default_material_print_temperature + 2 +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 +retraction_hop = 0.5 +retraction_min_travel = 1.5 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) + +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +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.6 +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 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..1c628f57c8 --- /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 = 9 +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..f0adc177a3 --- /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 = 9 +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..818426141e --- /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 = 9 +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..439f6a7063 --- /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 = 9 +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..dcef8ddf72 --- /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 = 9 +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..3bd6295712 --- /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 = 9 +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..7e94ba6a7c --- /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 = 9 +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..4a8b11eef2 --- /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 = 9 +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..aa83fa6a3b --- /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 = 9 +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..1c9814a87d --- /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 = 9 +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..aebbed3d5f --- /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 = 9 +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..c9179b1480 --- /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 = 9 +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..57019cb91f --- /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 = 9 +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..846679e355 --- /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 = 9 +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..228045c134 --- /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 = 9 +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..ae9c23d1a8 --- /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 = 9 +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..56de714613 --- /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 = 9 +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..a5bdfad16a --- /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 = 9 +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..f8bb270616 --- /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 = 9 +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..f2203eddbc --- /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 = 9 +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..7d05340547 --- /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 = 9 +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..4f12ea611f --- /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 = 9 +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..5fd3f6d3a6 --- /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 = 9 +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..eccb41a73e --- /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 = 9 +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..716a75d9e9 --- /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 = 9 +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..f0b961aba2 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 = 9 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..92eed71043 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 = 9 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..58e480f991 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 = 9 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..10d08f4c8a 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 = 9 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..5c64c46cd2 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 = 9 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..65d11cfe80 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 = 9 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..b21230c5c8 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 = 9 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..29a2905370 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 = 9 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..cf4f7eaa49 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 = 9 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..7125c6a4dc 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 = 9 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..16050dac07 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 = 9 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..fa5c2beee0 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 = 9 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..d17c7f81d2 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 = 9 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..cd7ac0ee60 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 = 9 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..1112e84381 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 = 9 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..cbf0abf7dd 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 = 9 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..62e122afb2 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 = 9 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..5f27043e05 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 = 9 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..4fe16c838c 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 = 9 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..ff07e497e3 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 = 9 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..3ba2542c60 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 = 9 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..8c9d4f1c0f 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 = 9 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..f8b3cf19f6 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 = 9 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..d8ea67b6a6 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 = 9 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..ec833e9a34 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 = 9 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..72a458abd4 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 = 9 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..db69d87ed5 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 = 9 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..32a63855c3 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 = 9 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..5d06a8adaf 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 = 9 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..147a0ecb17 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 = 9 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..c1cffb3380 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 = 9 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..2c21449983 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 = 9 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..30484b2352 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 = 9 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..9a46bc2714 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 = 9 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..ac331659c1 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 = 9 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..003e5b4c04 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 = 9 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..32de8ebfbd 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 = 9 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..9a9c642bae 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 = 9 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..7c52a95e05 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 = 9 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..8e698c0fa0 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 = 9 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..714cf0e203 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 = 9 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..a9e718157a 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 = 9 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..50693b036c 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 = 9 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..99a702e382 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 = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg index 6222dcdc7b..b4d23b1aa0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg index 2bf17429fa..97674c7ad2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg index 7d7f4b2aaa..5f9bb496e1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg index 6d78d9d027..8edf7fb757 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg index c02317792c..74405b7b73 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg index 57be60501c..99aea4e0b1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg index 44235b30eb..51ff55809a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg index a0b5af8679..203fdb1c22 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg index 52f22f807f..b10a899f11 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg index 117a9e0273..14b7749857 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg index d25ab9f605..0d5106fe97 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg index bafc867d14..cb2d43a14f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg index ddaef82dcc..7384d71110 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg index 5c85a32af0..a8c0d0fe1c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg index dbeed2dfe9..6856f7c38e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg index 3694db3f76..0923d26b41 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg index f50c38f892..23fa918a33 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg index 8f07b2a6a9..0ffc46daf0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg index 440d8cbfe6..40da2d84ae 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 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..2429490e4a 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 = 9 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..4aa5d702ed 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 = 9 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..40b58d873c 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 = 9 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..41508dfe6a 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 = 9 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..02fdb0700c 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 = 9 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..6b0e439dbe 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 = 9 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..4c4ee4171a 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 = 9 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..bf93a6ba11 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 = 9 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..ab0ed26a3b 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 = 9 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..65fd34985f 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 = 9 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..516442778f 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 = 9 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..2fa1ab9107 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 = 9 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..1e1a99c545 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 = 9 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..457b8b4c5d 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 = 9 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..6918c26882 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 = 9 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..f9c548c7f8 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 = 9 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..efb8189acd 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 = 9 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..0299255155 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 = 9 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..ac8c2d9190 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 = 9 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..a986d199e3 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 = 9 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..1bf8b4b9a9 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 = 9 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..b0c627e746 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 = 9 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..c0081916c7 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 = 9 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..c246963763 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 = 9 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..372829bb04 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 = 9 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..9347331b67 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 = 9 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..f75aed9bf1 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 = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg index e0dd599317..94c1df7ff3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg index 0ca1b63c0b..f1580c1723 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg index 1611c3fedd..fa5d5af7a2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg index 6b0f12f8dc..7333ecc637 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg index 78ad1f6eac..8821ca6e05 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg index 7be2cdbcc8..b5d07757f5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg index 67132b67fc..07485b146d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg index 49e70af112..4a1f125733 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg index 9d781092b1..0c9aedf895 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg index 04170b3ba2..55cdba5d2f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg index 90b7afdb8d..d656c7696d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg index f9b93eac37..a534ad0a71 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg index 3569aac74b..d07b85016d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg index 0e10a17210..7619423618 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg index 79d58f56f4..dcba5cc7e4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 9 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..2734c80920 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 = 9 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..d8c4d0409b 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 = 9 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..39f7098128 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 = 9 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..1a9a6bd3f0 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 = 9 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..06700548c7 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 = 9 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..89b41cb17e 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 = 9 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..635d8a216a 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 = 9 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..6529d6d9d5 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 = 9 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..1a8ea47fd9 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 = 9 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..ad4c342b74 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 = 9 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..4df36638d9 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 = 9 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..e11e599094 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 = 9 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..0aa2055a6b 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 = 9 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..7e306460f5 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 = 9 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..5e9755b22a 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 = 9 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..c0bc38fe37 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 = 9 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..270d03f953 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 = 9 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..3920ec3110 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 = 9 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..2b6fc62a8b 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 = 9 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..16b7d16cff 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 = 9 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..9214a3d87b 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 = 9 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..a196259df1 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 = 9 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..194508422c 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 = 9 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..5338c64f2d 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 = 9 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..9e1381620f 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 = 9 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..c702f93ce3 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 = 9 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..958f718a45 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 = 9 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..4492c3cb57 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 = 9 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..62c78aeb7b 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 = 9 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..1f22c073a2 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 = 9 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..4759be9be5 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 = 9 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..6ed5bba32e 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 = 9 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..0ab58926ce 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 = 9 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..3d0700dc82 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 = 9 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..3eebce23f8 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 = 9 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..237345b588 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 = 9 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..7ff29e4259 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 = 9 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..56867e8d23 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 = 9 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..90f140bbb6 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 = 9 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..9d0d537a12 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 = 9 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..829ef579a5 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 = 9 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..c6582c7b35 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 = 9 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..e58143750f 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 = 9 type = quality quality_type = normal weight = 0 diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index d83a7775c5..dd257669fe 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -99,6 +99,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 +114,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 +160,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 +204,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 +270,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 +304,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 +357,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 @@ -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..cb34f25893 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; @@ -56,7 +60,7 @@ fragment = 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; gl_FragColor = finalColor; gl_FragColor.a = 1.0; @@ -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 = selected_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 86% rename from plugins/ChangeLogPlugin/ChangeLog.txt rename to resources/texts/change_log.txt index f50913cbb4..efc476f606 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/resources/texts/change_log.txt @@ -1,3 +1,139 @@ +[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. 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 aed45e8a71..fc6c6612de 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -94,8 +94,8 @@ "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], 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/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/styles.qml b/resources/themes/cura-light/styles.qml index 121f604362..2cf3b0ed58 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 } } + + } } @@ -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 c870936723..9a7ebf1b37 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], @@ -424,7 +433,7 @@ "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] @@ -509,6 +518,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], @@ -533,7 +544,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], @@ -552,6 +563,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], @@ -569,7 +581,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], @@ -579,10 +591,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], @@ -590,11 +600,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], @@ -607,6 +618,7 @@ "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] } } 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..bfda21cb24 --- /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 = 9 +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..c50056fb22 --- /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 = 9 +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..bde776a567 --- /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 = 9 +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..82a5cb099b --- /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 = 9 +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..9cf5e9dd76 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 = 9 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..7e70c98d17 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 = 9 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..2fcbf16010 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 = 9 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..004cb95cd3 --- /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 = 9 +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..7fc9fc9082 --- /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 = 9 +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..37560b64cf --- /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 = 9 +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..59ea6335c8 --- /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 = 9 +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..5b6115a08e --- /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 = 9 +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..37dddf4865 --- /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 = 9 +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..284ca1b729 --- /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 = 9 +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..7370b87c53 --- /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 = 9 +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..19dcf0a144 --- /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 = 9 +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..01b8427464 --- /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 = 9 +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..879796b96a --- /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 = 9 +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..fa294fd501 --- /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 = 9 +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..5fe5e1a062 --- /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 = 9 +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..9cb78d057f --- /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 = 9 +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..0a3681a7bc --- /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 = 9 +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..6175b15f63 --- /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 = 9 +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..216458761a --- /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 = 9 +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..0459d56dd9 --- /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 = 9 +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..59610caaa9 --- /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 = 9 +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..d075f36947 --- /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 = 9 +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..a03b63c400 --- /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 = 9 +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..b87abc3174 --- /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 = 9 +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..af7c52d188 --- /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 = 9 +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..8f31497fa4 --- /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 = 9 +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..7e2a44acf6 --- /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 = 9 +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..fd6de6f22c --- /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 = 9 +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..a0db55ea6d --- /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 = 9 +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..5dded00f79 --- /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 = 9 +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..a2fe050993 --- /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 = 9 +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..f4e2c282e7 --- /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 = 9 +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..5702aad829 --- /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 = 9 +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..cf7a0816be --- /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 = 9 +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..e30af712cd --- /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 = 9 +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..2a473e4e01 --- /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 = 9 +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..b3fab2d1c8 --- /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 = 9 +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..4990ad0f9c --- /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 = 9 +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..bc3c2a0103 --- /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 = 9 +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..e77e645d65 --- /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 = 9 +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..14b2741598 --- /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 = 9 +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..ac862aa537 --- /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 = 9 +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..fceeee72af --- /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 = 9 +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..d687825610 --- /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 = 9 +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..8b868d9bd3 --- /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 = 9 +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..8c59109a89 --- /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 = 9 +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..48b7ebcff5 --- /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 = 9 +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..40730dc887 --- /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 = 9 +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..d2d5718878 --- /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 = 9 +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..5547858975 --- /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 = 9 +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..24216c0623 --- /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 = 9 +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..96d9ae77bd --- /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 = 9 +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..e01be6ad6c --- /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 = 9 +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..bddd6189c3 --- /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 = 9 +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..134c910551 --- /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 = 9 +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..ee941a58a1 --- /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 = 9 +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..5cee2fe2f6 --- /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 = 9 +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..e54a553b67 --- /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 = 9 +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..90fd1f9b54 --- /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 = 9 +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..384fb557ad --- /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 = 9 +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..6d54a45c53 --- /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 = 9 +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..042795a675 --- /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 = 9 +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..a04b4180bf --- /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 = 9 +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..fc6c24f9af --- /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 = 9 +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..8a038ec80e --- /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 = 9 +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..0170b6b05f --- /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 = 9 +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..3a5c1429e8 --- /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 = 9 +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..1d6b9d5574 --- /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 = 9 +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..514f505cba --- /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 = 9 +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..e59a2915a5 --- /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 = 9 +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..9fa11776d9 --- /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 = 9 +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..d4d369cbd3 --- /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 = 9 +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..3edd719430 --- /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 = 9 +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..d6912da402 --- /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 = 9 +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..5d203983a8 --- /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 = 9 +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..c662924f9f --- /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 = 9 +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..d43d774a5e --- /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 = 9 +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..8880e0cd52 --- /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 = 9 +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..8a623b6ccd --- /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 = 9 +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..67ad758196 --- /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 = 9 +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..a8052a2cfd --- /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 = 9 +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..779ddab657 --- /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 = 9 +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..9a24bd1971 --- /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 = 9 +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..93ff84b362 --- /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 = 9 +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..1a9218426b --- /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 = 9 +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..a21a9c9c90 --- /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 = 9 +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..da77f28389 --- /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 = 9 +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..82672c5074 --- /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 = 9 +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..4b5046eb15 --- /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 = 9 +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..635bc95139 --- /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 = 9 +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..601682ee2d --- /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 = 9 +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..f9b684d87f --- /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 = 9 +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..0da86b8aea --- /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 = 9 +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 index fd6575bf9a..54e21992db 100755 --- a/resources/variants/deltacomb_025_e3d.inst.cfg +++ b/resources/variants/deltacomb_025_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = deltacomb [metadata] author = Deltacomb 3D -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/deltacomb_040_e3d.inst.cfg b/resources/variants/deltacomb_040_e3d.inst.cfg index 3fab3e74c7..ab6a6eeb3f 100755 --- a/resources/variants/deltacomb_040_e3d.inst.cfg +++ b/resources/variants/deltacomb_040_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = deltacomb [metadata] author = Deltacomb 3D -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/deltacomb_080_e3d.inst.cfg b/resources/variants/deltacomb_080_e3d.inst.cfg index 61f8226280..367256cd5f 100755 --- a/resources/variants/deltacomb_080_e3d.inst.cfg +++ b/resources/variants/deltacomb_080_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = deltacomb [metadata] author = Deltacomb 3D -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index bf00512c8f..ca1a24cc79 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index cb4f7e4d34..fddbd77db8 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 9f0e3fe145..000ae9d463 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index b80f80155b..f1bb4b076f 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 7a0afdccb2..dca6a813a7 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index 6330b2e77c..dd642e7228 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index 412bbf7410..a1bda5a50b 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 = 9 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..9eb89502b6 --- /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 = 9 +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..a4d0848f63 --- /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 = 9 +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..2c7ff3bb6c --- /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 = 9 +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..b5de103f9d --- /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 = 9 +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..f49119f0e6 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 = 9 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.35.inst.cfg b/resources/variants/felixtec4_0.35.inst.cfg index 35850afa7a..f65128f518 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 = 9 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.50.inst.cfg b/resources/variants/felixtec4_0.50.inst.cfg index d4ee356132..e17abdc704 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 = 9 [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..ecd61db3d1 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 = 9 [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..cdef6f5b53 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 = 9 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..0b059c4789 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 = 9 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..311901cf67 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 = 9 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..c992bc1f4a 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 = 9 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..10a2669565 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 = 9 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..0138e70b29 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 = 9 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..8ba03ec144 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 = 9 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..bc178ec11d 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 = 9 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..322558033c 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 = 9 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..35cf37b345 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 = 9 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..39a060108d 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 = 9 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..fdd41236ee 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 = 9 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..8de26fb19e 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 = 9 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..df315665dc 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 = 9 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..bfd8c8cadf 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_0.25tpnozzle.inst.cfg b/resources/variants/hms434_0.25tpnozzle.inst.cfg index 72e4afe87a..d405652432 100644 --- a/resources/variants/hms434_0.25tpnozzle.inst.cfg +++ b/resources/variants/hms434_0.25tpnozzle.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_0.4tpnozzle.inst.cfg b/resources/variants/hms434_0.4tpnozzle.inst.cfg index 64bf1d6e63..3ec9bd00d1 100644 --- a/resources/variants/hms434_0.4tpnozzle.inst.cfg +++ b/resources/variants/hms434_0.4tpnozzle.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_0.6tpnozzle.inst.cfg b/resources/variants/hms434_0.6tpnozzle.inst.cfg index e7bcdd5fd4..48e0e1017c 100644 --- a/resources/variants/hms434_0.6tpnozzle.inst.cfg +++ b/resources/variants/hms434_0.6tpnozzle.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_0.8tpnozzle.inst.cfg b/resources/variants/hms434_0.8tpnozzle.inst.cfg index 1a09188dc4..d11eb0959a 100644 --- a/resources/variants/hms434_0.8tpnozzle.inst.cfg +++ b/resources/variants/hms434_0.8tpnozzle.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_1.2tpnozzle.inst.cfg b/resources/variants/hms434_1.2tpnozzle.inst.cfg index 21ef8f2a17..0e0bca7bd5 100644 --- a/resources/variants/hms434_1.2tpnozzle.inst.cfg +++ b/resources/variants/hms434_1.2tpnozzle.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_1.5tpnozzle.inst.cfg b/resources/variants/hms434_1.5tpnozzle.inst.cfg index 23aeffaee5..290a968cd4 100644 --- a/resources/variants/hms434_1.5tpnozzle.inst.cfg +++ b/resources/variants/hms434_1.5tpnozzle.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = hms434 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index 18481a8342..3ab33b561e 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 = 9 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..f9e09beabe 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 = 9 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..7a6544200a --- /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 = 9 +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..afbece180a --- /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 = 9 +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..ee249049d8 --- /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 = 9 +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..5458f1f7cb --- /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 = 9 +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 index bd67b654cd..5425f0a762 100644 --- a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.20.inst.cfg +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.20.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = structur3d_discov3ry1_complete_um2plus [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.25.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.25.inst.cfg index 389984f293..f4cb256bb0 100644 --- a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.25.inst.cfg +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = structur3d_discov3ry1_complete_um2plus [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.41.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.41.inst.cfg index f6936233e9..5b14aaa5dc 100644 --- a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.41.inst.cfg +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.41.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = structur3d_discov3ry1_complete_um2plus [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.58.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.58.inst.cfg index b30770afc4..cffbffd9c9 100644 --- a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.58.inst.cfg +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.58.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = structur3d_discov3ry1_complete_um2plus [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.84.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.84.inst.cfg index b83bef727d..0726cf860a 100644 --- a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.84.inst.cfg +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.84.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = structur3d_discov3ry1_complete_um2plus [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_1.19.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.19.inst.cfg index 9a0f4922ef..240568ad9a 100644 --- a/resources/variants/structur3d_discov3ry1_complete_um2plus_1.19.inst.cfg +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.19.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = structur3d_discov3ry1_complete_um2plus [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_1.60.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.60.inst.cfg index a235f406c0..3c6d63219c 100644 --- a/resources/variants/structur3d_discov3ry1_complete_um2plus_1.60.inst.cfg +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.60.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = structur3d_discov3ry1_complete_um2plus [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.2.inst.cfg b/resources/variants/tizyx_evy_0.2.inst.cfg index 94a72926a5..b9ec0434b4 100644 --- a/resources/variants/tizyx_evy_0.2.inst.cfg +++ b/resources/variants/tizyx_evy_0.2.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.3.inst.cfg b/resources/variants/tizyx_evy_0.3.inst.cfg index 4a1594b625..9f84898897 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 = 7 +setting_version = 9 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 ab67d2492e..7499a20f27 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 = 7 +setting_version = 9 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 6b1cf6b0fb..095b67615d 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 = 7 +setting_version = 9 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 58368245cf..badb7a5089 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 = 7 +setting_version = 9 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 8f6d8ce633..7ec7779605 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 = 7 +setting_version = 9 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 7e00752a90..f5e18bb63d 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 = 7 +setting_version = 9 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 index 00b7a7745a..85ed07f803 100644 --- a/resources/variants/tizyx_evy_dual_classic.inst.cfg +++ b/resources/variants/tizyx_evy_dual_classic.inst.cfg @@ -5,9 +5,11 @@ definition = tizyx_evy_dual [metadata] author = TiZYX -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.4 \ No newline at end of file +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 index 7bc450607e..58633891a9 100644 --- a/resources/variants/tizyx_evy_dual_direct_drive.inst.cfg +++ b/resources/variants/tizyx_evy_dual_direct_drive.inst.cfg @@ -5,9 +5,11 @@ definition = tizyx_evy_dual [metadata] author = TiZYX -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle [values] -machine_nozzle_size = 0.4 \ No newline at end of file +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..159423a0ad 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 = 9 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..8689aedd23 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 = 9 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..c923013ea6 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 = 9 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..de563f5983 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 = 9 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..0f4dac9152 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 = 9 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..64053da2b8 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 = 9 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..6b32885c0c 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index 87bb0a237d..a844b28ad7 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_0.4.inst.cfg index b50cc32eca..4f66962a7c 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_0.6.inst.cfg index fac65ed284..2b73baf1ad 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_0.8.inst.cfg index 9177e8e6ee..70bdc42b35 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_0.25.inst.cfg index eceb659e21..bbf48cd4a9 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_0.4.inst.cfg index e3dad7fd56..18a42a6348 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_0.6.inst.cfg index 82a5c08362..25e5b07239 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 7 +setting_version = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_0.8.inst.cfg index 4f9d1d8889..4cfae93064 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended [metadata] -setting_version = 7 +setting_version = 9 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..6942ea9258 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 = 9 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..c7c2b8a0d7 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 = 9 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..ca167687a8 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 = 9 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..e398d30afb 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 = 9 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..bbb9e2557c 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 = 9 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..596954f9b2 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 = 9 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..d930c1ccdb 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 = 9 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..e07db58e75 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 = 9 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..61b0be3943 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 = 9 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..2d1547bc43 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index b5a250184f..68edd4dbe7 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 = 9 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..7ad1cef66a 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 = 9 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 70e2a5faa8..0e06101c2a 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 = 9 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..b85e4d6211 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 = 9 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..9813695402 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 = 9 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..22db68acba 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 = 9 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..fd596bec60 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 = 9 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..75d9655eb2 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 = 9 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..7bcf71852f --- /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 = 9 +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..d272c05c43 --- /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 = 9 +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..91e7d774c7 --- /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 = 9 +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..611d351d4f --- /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 = 9 +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..198181c33b --- /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 = 9 +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..01a9350cfe --- /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 = 9 +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..6238c92b6c 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 = 9 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..8fa9158310 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 = 9 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..b9c4f32afb 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 = 9 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..fd712935e7 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 = 9 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..e8bc4f1523 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 = 9 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..754b681138 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 = 9 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..b252f1e12f 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 = 9 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..7cf673cb57 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 = 9 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/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..fd3d5aea55 --- /dev/null +++ b/tests/API/TestAccount.py @@ -0,0 +1,111 @@ +from unittest.mock import MagicMock, patch, PropertyMock + +import pytest + +from cura.API import CuraAPI, Account +from cura.OAuth2.AuthorizationService import AuthorizationService +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/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 index b3f7277051..da3ce66ac4 100644 --- a/tests/PrinterOutput/TestNetworkedPrinterOutputDevice.py +++ b/tests/PrinterOutput/TestNetworkedPrinterOutputDevice.py @@ -4,7 +4,7 @@ from unittest.mock import MagicMock from PyQt5.QtNetwork import QNetworkAccessManager from PyQt5.QtCore import QUrl from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState -from cura.PrinterOutputDevice import ConnectionState +from cura.PrinterOutput.PrinterOutputDevice import ConnectionState def test_properties(): 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/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index 1308e3d4df..cf30cbbee3 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -6,12 +6,13 @@ 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. @@ -35,6 +36,12 @@ 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): @@ -159,6 +166,7 @@ test_loadMetaDataValidation_data = [ } ] + @pytest.mark.parametrize("parameters", test_loadMetaDataValidation_data) def test_loadMetadataValidation(container_registry, definition_container, parameters): from cura.CuraApplication import CuraApplication @@ -178,4 +186,139 @@ def test_loadMetadataValidation(container_registry, definition_container, parame assert parameters["id"] in container_registry.metadata assert container_registry.metadata[parameters["id"]] == parameters["metadata"] else: - assert parameters["id"] not in container_registry.metadata \ No newline at end of file + 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" + + 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.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..300536f756 --- /dev/null +++ b/tests/Settings/TestCuraStackBuilder.py @@ -0,0 +1,87 @@ +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 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, 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.getContainer = MagicMock(return_value = 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.getContainer = MagicMock(return_value = quality_container) + quality_manager.getQualityGroups = MagicMock(return_value = {"normal": quality_group}) + + application.getContainerRegistry = MagicMock(return_value=container_registry) + application.getVariantManager = MagicMock(return_value = variant_manager) + application.getQualityManager = MagicMock(return_value = quality_manager) + application.empty_material_container = material_instance_container + application.empty_quality_container = quality_container + application.empty_quality_changes_container = quality_changes_container + + metadata = definition_container.getMetaData() + metadata["machine_extruder_trains"] = {} + metadata["preferred_quality_type"] = "normal" + + container_registry.addContainer(definition_container) + 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, quality_changes_container): + application.empty_material_container = material_instance_container + application.empty_quality_container = quality_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..73d4e89d20 100644 --- a/tests/Settings/TestDefinitionContainer.py +++ b/tests/Settings/TestDefinitionContainer.py @@ -36,15 +36,14 @@ def test_validateMachineDefinitionContainer(file_name, definition_container): 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) + assertIsDefinitionValid(definition_container, definition_path, file_name) -def isDefinitionValid(definition_container, path, file_name): +def assertIsDefinitionValid(definition_container, path, file_name): with open(os.path.join(path, file_name), 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/ @@ -52,6 +51,4 @@ def isDefinitionValid(definition_container, path, file_name): assert metadata[0]["platform"] in all_meshes if "platform_texture" in metadata[0]: - assert metadata[0]["platform_texture"] in all_images - - return is_valid + assert metadata[0]["platform_texture"] in all_images \ 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/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/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..47a4dc3cb0 --- /dev/null +++ b/tests/TestCuraSceneNode.py @@ -0,0 +1,54 @@ +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]]) + + +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/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 index b989a6ee79..1e8cd8fb12 100644 --- a/tests/TestMachineManager.py +++ b/tests/TestMachineManager.py @@ -2,25 +2,20 @@ from unittest.mock import MagicMock, patch import pytest -from UM.Settings.ContainerRegistry import ContainerRegistry -from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.MachineManager import MachineManager @pytest.fixture() -def container_registry() -> ContainerRegistry: - return MagicMock() +def global_stack(): + stack = MagicMock(name="Global Stack") + stack.getId = MagicMock(return_value ="GlobalStack") + return stack + @pytest.fixture() -def extruder_manager(application, container_registry) -> ExtruderManager: - 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) -> MachineManager: +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) @@ -41,3 +36,115 @@ def test_setActiveMachine(machine_manager): # 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_allActiveMaterialIds(machine_manager, extruder_manager): + extruder_1 = createMockedExtruder("extruder_1") + extruder_2 = createMockedExtruder("extruder_2") + extruder_1.material = createMockedInstanceContainer("material_1") + extruder_2.material = createMockedInstanceContainer("material_2") + extruder_manager.getActiveExtruderStacks = MagicMock(return_value = [extruder_1, extruder_2]) + assert machine_manager.allActiveMaterialIds == {"extruder_1": "material_1", "extruder_2": "material_2"} + + +def test_activeVariantNames(machine_manager, extruder_manager): + extruder_1 = createMockedExtruder("extruder_1") + extruder_2 = createMockedExtruder("extruder_2") + extruder_1.getMetaDataEntry = MagicMock(return_value = "0") + extruder_2.getMetaDataEntry = MagicMock(return_value= "2") + extruder_1.variant = createMockedInstanceContainer("variant_1", "variant_name_1") + extruder_2.variant = createMockedInstanceContainer("variant_2", "variant_name_2") + extruder_manager.getActiveExtruderStacks = MagicMock(return_value=[extruder_1, extruder_2]) + + assert machine_manager.activeVariantNames == {"0": "variant_name_1", "2": "variant_name_2"} + + +def test_globalVariantName(machine_manager, application): + global_stack = application.getGlobalContainerStack() + global_stack.variant = createMockedInstanceContainer("beep", "zomg") + assert machine_manager.globalVariantName == "zomg" + + +def test_activeMachineDefinitionName(machine_manager): + global_stack = machine_manager.activeMachine + global_stack.definition = createMockedInstanceContainer("beep", "zomg") + assert machine_manager.activeMachineDefinitionName == "zomg" + + +def test_activeMachineId(machine_manager): + assert machine_manager.activeMachineId == "GlobalStack" + + +def test_activeVariantBuildplateName(machine_manager): + global_stack = machine_manager.activeMachine + global_stack.variant = createMockedInstanceContainer("beep", "zomg") + assert machine_manager.activeVariantBuildplateName == "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.extruders = {"1": extruder_1, "2": 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/TestMaterialManager.py b/tests/TestMaterialManager.py index 2d66dfa4fd..4f339f54a4 100644 --- a/tests/TestMaterialManager.py +++ b/tests/TestMaterialManager.py @@ -4,8 +4,8 @@ from cura.Machines.MaterialManager import MaterialManager mocked_registry = MagicMock() -material_1 = {"id": "test", "GUID":"TEST!", "base_file": "base_material", "definition": "fdmmachine", "approximate_diameter": 3, "brand": "generic"} -material_2 = {"id": "base_material", "GUID": "TEST2!", "base_file": "test", "definition": "fdmmachine", "approximate_diameter": 3} +material_1 = {"id": "test", "GUID":"TEST!", "base_file": "base_material", "definition": "fdmmachine", "approximate_diameter": "3", "brand": "generic", "material": "pla"} +material_2 = {"id": "base_material", "GUID": "TEST2!", "base_file": "test", "definition": "fdmmachine", "approximate_diameter": "3", "material": "pla"} mocked_registry.findContainersMetadata = MagicMock(return_value = [material_1, material_2]) @@ -24,20 +24,162 @@ def test_initialize(application): assert manager.getMaterialGroup("test").name == "test" -def test_getAvailableMaterials(application): +def test_getMaterialGroupListByGUID(application): with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): manager = MaterialManager(mocked_registry) manager.initialize() - available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 3) + assert manager.getMaterialGroupListByGUID("TEST!")[0].name == "test" + assert manager.getMaterialGroupListByGUID("TEST2!")[0].name == "base_material" - assert "base_material" in available_materials - assert "test" in available_materials + +def test_getRootMaterialIDforDiameter(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + assert manager.getRootMaterialIDForDiameter("base_material", "3") == "base_material" + + +def test_getMaterialNodeByTypeMachineHasNoMaterials(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + mocked_stack = MagicMock() + assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "") is None + + +def test_getMaterialNodeByTypeMachineHasMaterialsButNoMaterialFound(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + mocked_stack = MagicMock() + mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = True) # For the "has_materials" metadata + + assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "") is None + + +def test_getMaterialNodeByTypeMachineHasMaterialsAndMaterialExists(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + mocked_result = MagicMock() + manager.getMaterialNode = MagicMock(return_value = mocked_result) + mocked_stack = MagicMock() + mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = True) # For the "has_materials" metadata + + assert manager.getMaterialNodeByType(mocked_stack, "0", "nozzle", "", "TEST!") is mocked_result + + +def test_getAllMaterialGroups(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + material_groups = manager.getAllMaterialGroups() + + assert "base_material" in material_groups + assert "test" in material_groups + assert material_groups["base_material"].name == "base_material" + assert material_groups["test"].name == "test" + + +class TestAvailableMaterials: + def test_happy(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 3) + + assert "base_material" in available_materials + assert "test" in available_materials + + def test_wrongDiameter(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 200) + assert available_materials == {} # Nothing found. + + def test_excludedMaterials(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + with patch.object(mocked_definition, "getMetaDataEntry", MagicMock(return_value = ["test"])): + available_materials = manager.getAvailableMaterials(mocked_definition, None, None, 3) + assert "base_material" in available_materials + assert "test" not in available_materials + + +class Test_getFallbackMaterialIdByMaterialType: + def test_happyFlow(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + assert manager.getFallbackMaterialIdByMaterialType("pla") == "test" + + def test_unknownMaterial(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + assert manager.getFallbackMaterialIdByMaterialType("OMGZOMG") is None def test_getMaterialNode(application): with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): manager = MaterialManager(mocked_registry) - manager.initialize() + manager._updateMaps() assert manager.getMaterialNode("fdmmachine", None, None, 3, "base_material").getMetaDataEntry("id") == "test" + + +def test_getAvailableMaterialsForMachineExtruder(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.initialize() + + mocked_machine = MagicMock() + mocked_machine.getBuildplateName = MagicMock(return_value = "build_plate") + mocked_machine.definition = mocked_definition + mocked_extruder_stack = MagicMock() + mocked_extruder_stack.variant.getId = MagicMock(return_value = "test") + mocked_extruder_stack.getApproximateMaterialDiameter = MagicMock(return_value = 2.85) + + available_materials = manager.getAvailableMaterialsForMachineExtruder(mocked_machine, mocked_extruder_stack) + assert "base_material" in available_materials + assert "test" in available_materials + + +class TestFavorites: + def test_addFavorite(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.materialsUpdated = MagicMock() + manager.addFavorite("blarg") + assert manager.getFavorites() == {"blarg"} + + application.getPreferences().setValue.assert_called_once_with("cura/favorite_materials", "blarg") + manager.materialsUpdated.emit.assert_called_once_with() + + def test_removeNotExistingFavorite(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.materialsUpdated = MagicMock() + manager.removeFavorite("blarg") + manager.materialsUpdated.emit.assert_not_called() + + def test_removeExistingFavorite(self, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + manager = MaterialManager(mocked_registry) + manager.materialsUpdated = MagicMock() + manager.addFavorite("blarg") + + manager.removeFavorite("blarg") + assert manager.materialsUpdated.emit.call_count == 2 + application.getPreferences().setValue.assert_called_with("cura/favorite_materials", "") + assert manager.getFavorites() == set() \ 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 cae204a135..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 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/TestQualityManager.py b/tests/TestQualityManager.py index 50318260b2..10fa9f0ae1 100644 --- a/tests/TestQualityManager.py +++ b/tests/TestQualityManager.py @@ -1,11 +1,10 @@ -from unittest.mock import MagicMock +from unittest.mock import MagicMock, patch import pytest +from cura.Machines.QualityChangesGroup import QualityChangesGroup from cura.Machines.QualityManager import QualityManager - - mocked_stack = MagicMock() mocked_extruder = MagicMock() @@ -28,6 +27,8 @@ def container_registry(): {"id": "test_material", "definition": "fdmprinter", "quality_type": "normal", "name": "test_name_material", "material": "base_material", "type": "quality"}, {"id": "quality_changes_id", "definition": "fdmprinter", "type": "quality_changes", "quality_type": "amazing!", "name": "herp"}] result.findContainersMetadata = MagicMock(return_value = mocked_metadata) + + result.uniqueName = MagicMock(return_value = "uniqueName") return result @@ -58,3 +59,73 @@ def test_getQualityChangesGroup(quality_mocked_application): manager.initialize() assert "herp" in manager.getQualityChangesGroups(mocked_stack) + + +@pytest.mark.skip("Doesn't work on remote") +def test_getDefaultQualityType(quality_mocked_application): + manager = QualityManager(quality_mocked_application) + manager.initialize() + mocked_stack = MagicMock() + mocked_stack.definition.getMetaDataEntry = MagicMock(return_value = "normal") + assert manager.getDefaultQualityType(mocked_stack).quality_type == "normal" + + +def test_createQualityChanges(quality_mocked_application): + manager = QualityManager(quality_mocked_application) + mocked_quality_changes = MagicMock() + manager._createQualityChanges = MagicMock(return_value = mocked_quality_changes) + manager.initialize() + container_manager = MagicMock() + + manager._container_registry.addContainer = MagicMock() # Side effect we want to check. + with patch("cura.Settings.ContainerManager.ContainerManager.getInstance", container_manager): + manager.createQualityChanges("derp") + assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes) + + +def test_renameQualityChangesGroup(quality_mocked_application): + manager = QualityManager(quality_mocked_application) + manager.initialize() + + mocked_container = MagicMock() + + quality_changes_group = QualityChangesGroup("zomg", "beep") + quality_changes_group.getAllNodes = MagicMock(return_value = [mocked_container]) + + # We need to check for "uniqueName" instead of "NEWRANDOMNAMEYAY" because the mocked registry always returns + # "uniqueName" when attempting to generate an unique name. + assert manager.renameQualityChangesGroup(quality_changes_group, "NEWRANDOMNAMEYAY") == "uniqueName" + assert mocked_container.setName.called_once_with("uniqueName") + + +def test_duplicateQualityChangesQualityOnly(quality_mocked_application): + manager = QualityManager(quality_mocked_application) + manager.initialize() + mocked_quality = MagicMock() + quality_group = MagicMock() + quality_group.getAllNodes = MagicMock(return_value = mocked_quality) + mocked_quality_changes = MagicMock() + + # Isolate what we want to test (in this case, we're not interested if createQualityChanges does it's job!) + manager._createQualityChanges = MagicMock(return_value = mocked_quality_changes) + manager._container_registry.addContainer = MagicMock() # Side effect we want to check. + + manager.duplicateQualityChanges("zomg", {"quality_group": quality_group, "quality_changes_group": None}) + assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes) + + +def test_duplicateQualityChanges(quality_mocked_application): + manager = QualityManager(quality_mocked_application) + manager.initialize() + mocked_quality = MagicMock() + quality_group = MagicMock() + quality_group.getAllNodes = MagicMock(return_value = mocked_quality) + quality_changes_group = MagicMock() + mocked_quality_changes = MagicMock() + quality_changes_group.getAllNodes = MagicMock(return_value=[mocked_quality_changes]) + mocked_quality_changes.duplicate = MagicMock(return_value = mocked_quality_changes) + + manager._container_registry.addContainer = MagicMock() # Side effect we want to check. + + manager.duplicateQualityChanges("zomg", {"quality_group": quality_group, "quality_changes_group": quality_changes_group}) + assert manager._container_registry.addContainer.called_once_with(mocked_quality_changes) \ No newline at end of file diff --git a/tests/conftest.py b/tests/conftest.py index b21b32b028..829253dfd1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,12 +6,17 @@ import unittest.mock 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 UM.Settings.ContainerRegistry import ContainerRegistry +from cura.CuraApplication import CuraApplication +from cura.Settings.ExtruderManager import ExtruderManager +from cura.UI.MachineActionManager import MachineActionManager +from unittest.mock import MagicMock, patch # 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. @@ -20,7 +25,24 @@ def application() -> CuraApplication: app = unittest.mock.MagicMock() return app + +@pytest.fixture() +def container_registry() -> ContainerRegistry: + return MagicMock(name = "ContainerRegistry") + + # Returns a MachineActionManager instance. @pytest.fixture() def machine_action_manager(application) -> MachineActionManager: return MachineActionManager(application) + +@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 \ No newline at end of file